source: release-kits/shared/ant-installer/src/org/tp23/antinstaller/renderer/swing/SimpleInputPageRenderer.java@ 15206

Last change on this file since 15206 was 15206, checked in by oranfry, 16 years ago

work on the GUI of the installer

File size: 6.2 KB
Line 
1/*
2 * Copyright 2005 Paul Hinds
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.tp23.antinstaller.renderer.swing;
17
18import java.awt.BorderLayout;
19import java.awt.Color;
20import java.awt.Dimension;
21import java.awt.Font;
22import java.awt.GridBagLayout;
23import java.awt.GridLayout;
24import javax.swing.BoxLayout;
25import java.awt.FlowLayout;
26import java.awt.Insets;
27import java.util.ArrayList;
28
29import javax.swing.BorderFactory;
30import javax.swing.JFrame;
31import javax.swing.JLabel;
32import javax.swing.JPanel;
33import javax.swing.JScrollPane;
34import javax.swing.JTextArea;
35import javax.swing.ToolTipManager;
36
37import org.tp23.antinstaller.ValidationException;
38import org.tp23.antinstaller.input.CommentOutput;
39import org.tp23.antinstaller.input.OutputField;
40import org.tp23.antinstaller.page.SimpleInputPage;
41import org.tp23.antinstaller.renderer.RendererFactory;
42import org.tp23.gui.GBCF;
43
44/**
45 *
46 * <p>This PageRenderer just renders a list of SwingInputRenderers using
47* a BoxLayout </p>
48 * <p> </p>
49 * <p>Copyright: Copyright (c) 2004</p>
50 * <p>Company: tp23</p>
51 * @author Paul Hinds
52 * @version $Id: SimpleInputPageRenderer.java,v 1.6 2006/12/27 21:46:35 teknopaul Exp $
53 */
54public class SimpleInputPageRenderer
55 extends SwingPageRenderer {
56
57 //Prevent displayText and explanatoryText being rendered using different fonts
58 private static final Font defaultFont = new JLabel().getFont();
59
60 private JPanel contentPanel = new JPanel();
61
62
63 //private GridBagLayout gridLayout = new GridBagLayout();
64 private BoxLayout layout = new BoxLayout(contentPanel,BoxLayout.Y_AXIS);
65 //private BorderLayout layout = new BorderLayout();
66 private GBCF cf = new GBCF(); // GridBagConstraintsFactory
67 private boolean overflow = false;
68 // used in overflow
69 JScrollPane scroller = null;
70
71
72 private ArrayList renderers = new ArrayList();
73
74 public SimpleInputPageRenderer(){
75 }
76
77 public boolean validateFields() throws ValidationException {
78 OutputField[] fields = page.getOutputField();
79 for (int i = 0; i < fields.length; i++) {
80 if(!fields[i].validate(ctx)){
81 SwingOutputFieldRenderer renderer = (SwingOutputFieldRenderer)renderers.get(i);
82 renderer.renderError();
83 return false;
84 }
85 }
86 return true;
87 }
88 public void updateInputFields(){
89 for (int i = 0; i < renderers.size(); i++) {
90 ((SwingOutputFieldRenderer)renderers.get(i)).updateInputField();
91 }
92 }
93
94 public void updateDefaultValues(){
95 for (int i = 0; i < renderers.size(); i++) {
96 ((SwingOutputFieldRenderer)renderers.get(i)).updateDefaultValue();
97 }
98 }
99
100 public void instanceInit() throws Exception {
101
102 ToolTipManager.sharedInstance().setInitialDelay(0);
103 ToolTipManager.sharedInstance().setDismissDelay(Integer.MAX_VALUE);
104
105
106 overflow = ((SimpleInputPage)page).isOverflow();
107 if(overflow){
108 //WARNING this causes flickering in the UI
109 //contentPanel.setMaximumSize(new Dimension(SizeConstants.PAGE_WIDTH - 50, SizeConstants.PAGE_HEIGHT));
110 scroller = new JScrollPane();
111 scroller.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
112 scroller.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
113 scroller.setBorder(BorderFactory.createCompoundBorder(
114 BorderFactory.createEmptyBorder(4,4,4,4),
115 BorderFactory.createEtchedBorder()
116 ));
117 scroller.getViewport().add(contentPanel);
118
119 masterPanel.add( scroller, BorderLayout.CENTER );
120 //contentPanel.setBackground(Color.red);
121 }
122 else {
123 masterPanel.add(contentPanel, BorderLayout.CENTER);
124 contentPanel.setBorder(BorderFactory.createEmptyBorder(SizeConstants.TOP_INDENT, 4, 4, 4));
125 }
126
127 OutputField[] fields = page.getOutputField();
128 contentPanel.setDoubleBuffered(true);
129 contentPanel.setLayout(layout);
130 int row = 0;
131 for (int i = 0; i < fields.length; i++) {
132 SwingOutputFieldRenderer renderer = RendererFactory.getSwingRenderer(fields[i]);
133/* String text = fields[i].getExplanatoryText();
134 if(fields[i].getExplanatoryText() != null){
135 JTextArea area = new DisplayTextArea(contentPanel.getBackground(), contentPanel.getForeground());
136 //JTextArea area = new JTextArea();
137 //area.setBackground( new Color(0xaaaaff) );
138 area.setIgnoreRepaint(true);
139 area.setFont( defaultFont );
140 area.setText(text);
141 //area.setLineWrap(true);
142 contentPanel.add(area, cf.getSpan(row++));
143 if(fields[i] instanceof CommentOutput){
144 CommentOutputRenderer crenderer = (CommentOutputRenderer)renderer;
145 crenderer.setExplanatoryTextField(area);
146 if(fields[i].getDisplayText() == null){
147 continue;
148 }
149 }
150 }
151*/
152 renderer.setOutputField(fields[i]);
153 renderer.setInstallerContext(ctx);
154 renderer.initComponent(contentPanel);
155 row = renderer.addSelf(contentPanel, cf, row, overflow);
156 renderers.add(renderer);
157 }
158 contentPanel.add(new JPanel(), cf.getVertGlue(row++));
159 }
160}
161/**
162 * A JTextArea that is not editable and looks like a JLabel but uses
163 * JTextAreas ability to wrap. Also has a fixed prefered width;
164 * @author Paul Hinds
165 * @version $Id: SimpleInputPageRenderer.java,v 1.6 2006/12/27 21:46:35 teknopaul Exp $
166 */
167class DisplayTextArea extends JTextArea{
168 DisplayTextArea(Color back, Color fore){
169 super();
170 this.setBackground(back);
171 this.setForeground(fore);
172 this.setLineWrap(true);
173 this.setWrapStyleWord(true);
174 this.setEditable(false);
175 this.setSelectionColor(back);
176 this.setSelectionColor(back);
177 this.setMargin(new Insets(5,0,0,0));
178 }
179
180/* public Dimension getPreferredSize(){
181 Dimension pref = super.getPreferredSize();
182 return new Dimension(SizeConstants.PAGE_WIDTH - 40, pref.height);
183 }
184 public Dimension getMinimumSize(){
185 Dimension pref = super.getMinimumSize();
186 return new Dimension(SizeConstants.PAGE_WIDTH - 40, pref.height);
187 }*/
188}
Note: See TracBrowser for help on using the repository browser.