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