Source code: screengen/borders/BorderEditPanel.java
1 // Screengen - A visual gui builder for java windows
2 // Copyright (C) 1999 Mark O'Donohue
3 // <mark.odonohue@ludwig.edu.au>
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation; either version 2 of the License, or
8 // any later version.
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16 //
17
18 package screengen.borders;
19
20 import java.util.*;
21 import java.awt.*;
22 import java.awt.event.*;
23
24 import javax.swing.*;
25 import javax.swing.border.*;
26
27 public class BorderEditPanel extends BorderEditPanelBase implements BorderChangeListener {
28 DefaultComboBoxModel oBorderList;
29 boolean bInitNewComponentFlg = false;
30 JComponent oComp;
31 Border oBorder;
32
33
34 static JDesktopPane oDesktop;
35
36
37 public static void setDesktop(JDesktopPane oNewDesktop) {
38 oDesktop = oNewDesktop;
39 }
40
41 public static void addToDesktop(JInternalFrame oNew) {
42 oDesktop.add(oNew, JLayeredPane.PALETTE_LAYER);
43
44 }
45
46 public BorderEditPanel() {
47
48 OkButton.setVisible(false);
49 CancelButton.setVisible(false);
50 BuildComboBoxOptions();
51 }
52
53
54 public void BuildComboBoxOptions() {
55 oBorderList = new DefaultComboBoxModel();
56
57 FactoryBorderItem.getFactoryBorders();
58
59 Vector oBorders = BorderItem.getAllBorders();
60 for (Enumeration e= oBorders.elements(); e.hasMoreElements();) {
61 BorderItem oItem = (BorderItem) e.nextElement();
62 oBorderList.addElement(oItem);
63 BorderDetailPanel.add(BuildBorderEditPanel(oItem), oItem.toString());
64 }
65
66 BorderTypeComboBox.setModel(oBorderList);
67 BorderTypeComboBox.setRenderer(new BorderCellRenderer());
68
69 BorderTypeComboBox.addItemListener( new ItemListener() {
70 public void itemStateChanged(ItemEvent evt) {
71 //System.out.println("Checkbox Item has changed state ");
72 Object oBorder = BorderTypeComboBox.getSelectedItem();
73 oBorderDetailsLayout.show(BorderDetailPanel,oBorder.toString());
74 }
75 });
76
77
78 BorderTypeComboBox.addActionListener( new ActionListener() {
79 public void actionPerformed(ActionEvent e) {
80 if (bInitNewComponentFlg) return;
81
82 ChangeBorderType();
83 }
84 });
85
86 }
87
88
89 CardLayout oBorderDetailsLayout;
90
91 JPanel BuildBorderDetailPanel() {
92 JPanel BorderDetailPanel = new JPanel();
93 oBorderDetailsLayout = new CardLayout();
94 BorderDetailPanel.setLayout(oBorderDetailsLayout);
95 return BorderDetailPanel;
96 }
97
98 Hashtable oBorderToPanelMap = new Hashtable();
99
100 JComponent BuildBorderEditPanel(BorderItem oItem) {
101 BorderItemPanel oChild = oItem.BuildPanel();
102 oBorderToPanelMap.put(oItem, oChild);
103
104 oChild.addBorderChangeListener(this);
105
106 return oChild;
107 }
108
109
110 void ChangeBorderType() {
111 BorderItem oItem = (BorderItem) BorderTypeComboBox.getSelectedItem();
112 Border oNewBorder = oItem.createNewInstance();
113 if (oNewBorder != null) {
114 // System.out.println("Changed border ");
115 changedBorder(oNewBorder);
116 }
117 UpdatePanelValuesForSelectedBorderItem();
118
119 //System.out.println("User has elected to change border type");
120 // oBorderDetailsLayout.show(BorderDetailPanel,oBorder.toString());
121 }
122
123 void UpdatePanelValuesForSelectedBorderItem() {
124 BorderItem oItem = BorderItem.getBorderItemForBorder(oBorder);
125 BorderItemPanel oPanel = (BorderItemPanel) oBorderToPanelMap.get(oItem);
126 if (oPanel != null) {
127 oPanel.SetValuesFrom(oComp, oBorder);
128 }
129 }
130
131 public void changedBorder(Border oNewBorder) {
132 BorderItem.setDisplayedComponentBorder(oComp, oNewBorder);
133 oBorder = BorderItem.getDisplayedComponentBorder(oComp);
134 }
135
136
137
138 public void SetValuesFrom(JComponent oNewComp, Border oNewBorder) {
139 oComp = oNewComp;
140 oBorder = oNewBorder;
141 // System.out.println("dsks-1");
142 BorderItem oItem = BorderItem.getBorderItemForBorder(oBorder);
143 //System.out.println("SetValueFrom " + oBorder + " " + oItem);
144 if (oItem != null) {
145 // System.out.println("dsks -2");
146
147 bInitNewComponentFlg = true;
148 BorderTypeComboBox.setSelectedItem(oItem);
149 bInitNewComponentFlg = false;
150 UpdatePanelValuesForSelectedBorderItem();
151 }
152
153 }
154
155 public void ShowBorderForComponent(JComponent oNewComp) {
156 SetValuesFrom(oNewComp, BorderItem.getDisplayedComponentBorder(oNewComp));
157 }
158 }