001 package org.apache.myfaces.tobago.component;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one or more
005 * contributor license agreements. See the NOTICE file distributed with
006 * this work for additional information regarding copyright ownership.
007 * The ASF licenses this file to You under the Apache License, Version 2.0
008 * (the "License"); you may not use this file except in compliance with
009 * the License. You may obtain a copy of the License at
010 *
011 * http://www.apache.org/licenses/LICENSE-2.0
012 *
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 */
019
020 import org.apache.commons.logging.Log;
021 import org.apache.commons.logging.LogFactory;
022
023 import javax.faces.application.Application;
024 import javax.faces.application.ViewHandler;
025 import javax.faces.context.FacesContext;
026
027 public class Window {
028
029 private static final Log LOG = LogFactory.getLog(Window.class);
030
031 private String viewId;
032 private String name;
033 private int width = 300;
034 private int height = 300;
035 private int left = 100;
036 private int top = 100;
037 private boolean dependent;
038
039 public Window(String viewId) {
040 this.viewId = viewId;
041 }
042
043 public Window(String viewId, int width, int height) {
044 this.viewId = viewId;
045 this.width = width;
046 this.height = height;
047 }
048
049 public Window(String viewId, int width, int heigth, int x, int y) {
050 this.viewId = viewId;
051 this.width = width;
052 this.height = heigth;
053 this.left = x;
054 this.top = y;
055 }
056
057 public void activate(UIPage page) {
058 page.getScriptFiles().add("script/popup.js");
059
060 FacesContext facesContext = FacesContext.getCurrentInstance();
061 Application application = facesContext.getApplication();
062 ViewHandler viewHandler = application.getViewHandler();
063 String actionUrl = viewHandler.getActionURL(facesContext, viewId);
064 actionUrl = facesContext.getExternalContext().encodeActionURL(actionUrl);
065 if (LOG.isDebugEnabled()) {
066 LOG.debug("actionUrl = '" + actionUrl + "'");
067 }
068
069 StringBuilder buffer = new StringBuilder();
070 buffer.append("openPopup('");
071 buffer.append(actionUrl);
072 buffer.append("', '");
073 buffer.append(name);
074 buffer.append("', '");
075 buffer.append(width);
076 buffer.append("', '");
077 buffer.append(height);
078 buffer.append("', '");
079 if (dependent) {
080 buffer.append('p');
081 }
082 buffer.append("', '");
083 buffer.append(left);
084 buffer.append("', '");
085 buffer.append(top);
086 buffer.append("');");
087 page.getOnloadScripts().add(buffer.toString());
088 }
089
090 public String getViewId() {
091 return viewId;
092 }
093
094 public void setViewId(String viewId) {
095 this.viewId = viewId;
096 }
097
098 public String getName() {
099 return name;
100 }
101
102 public void setName(String name) {
103 this.name = name;
104 }
105
106 public int getWidth() {
107 return width;
108 }
109
110 public void setWidth(int width) {
111 this.width = width;
112 }
113
114 public int getHeight() {
115 return height;
116 }
117
118 public void setHeight(int height) {
119 this.height = height;
120 }
121
122 public int getLeft() {
123 return left;
124 }
125
126 public void setLeft(int left) {
127 this.left = left;
128 }
129
130 public int getTop() {
131 return top;
132 }
133
134 public void setTop(int top) {
135 this.top = top;
136 }
137
138 public boolean isDependent() {
139 return dependent;
140 }
141
142 public void setDependent(boolean dependent) {
143 this.dependent = dependent;
144 }
145 }
146