KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > compiere > plaf > CompierePLAFEditor


1 /******************************************************************************
2  * The contents of this file are subject to the Compiere License Version 1.1
3  * ("License"); You may not use this file except in compliance with the License
4  * You may obtain a copy of the License at http://www.compiere.org/license.html
5  * Software distributed under the License is distributed on an "AS IS" basis,
6  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
7  * the specific language governing rights and limitations under the License.
8  * The Original Code is Compiere ERP & CRM Business Solution
9  * The Initial Developer of the Original Code is Jorg Janke and ComPiere, Inc.
10  * Portions created by Jorg Janke are Copyright (C) 1999-2001 Jorg Janke, parts
11  * created by ComPiere are Copyright (C) ComPiere, Inc.; All Rights Reserved.
12  * Contributor(s): ______________________________________.
13  *****************************************************************************/

14 package org.compiere.plaf;
15
16 import java.awt.BorderLayout JavaDoc;
17 import java.awt.Color JavaDoc;
18 import java.awt.Cursor JavaDoc;
19 import java.awt.Dialog JavaDoc;
20 import java.awt.Dimension JavaDoc;
21 import java.awt.FlowLayout JavaDoc;
22 import java.awt.Frame JavaDoc;
23 import java.awt.GridBagConstraints JavaDoc;
24 import java.awt.GridBagLayout JavaDoc;
25 import java.awt.Insets JavaDoc;
26 import java.awt.Toolkit JavaDoc;
27 import java.awt.event.ActionEvent JavaDoc;
28 import java.awt.event.ActionListener JavaDoc;
29 import java.util.ResourceBundle JavaDoc;
30
31 import javax.swing.DefaultComboBoxModel JavaDoc;
32 import javax.swing.JButton JavaDoc;
33 import javax.swing.JCheckBox JavaDoc;
34 import javax.swing.JComboBox JavaDoc;
35 import javax.swing.JDialog JavaDoc;
36 import javax.swing.JEditorPane JavaDoc;
37 import javax.swing.JLabel JavaDoc;
38 import javax.swing.JList JavaDoc;
39 import javax.swing.JOptionPane JavaDoc;
40 import javax.swing.JPasswordField JavaDoc;
41 import javax.swing.JRadioButton JavaDoc;
42 import javax.swing.JScrollPane JavaDoc;
43 import javax.swing.JSplitPane JavaDoc;
44 import javax.swing.JTable JavaDoc;
45 import javax.swing.JTextArea JavaDoc;
46 import javax.swing.JTextField JavaDoc;
47 import javax.swing.JTextPane JavaDoc;
48 import javax.swing.JTree JavaDoc;
49 import javax.swing.LookAndFeel JavaDoc;
50 import javax.swing.UIManager JavaDoc;
51 import javax.swing.WindowConstants JavaDoc;
52 import javax.swing.border.TitledBorder JavaDoc;
53 import javax.swing.plaf.metal.MetalLookAndFeel JavaDoc;
54 import javax.swing.plaf.metal.MetalTheme JavaDoc;
55
56 import org.compiere.swing.CButton;
57 import org.compiere.swing.CCheckBox;
58 import org.compiere.swing.CComboBox;
59 import org.compiere.swing.CLabel;
60 import org.compiere.swing.CPanel;
61 import org.compiere.swing.CTabbedPane;
62 import org.compiere.swing.CTextField;
63 import org.compiere.swing.CToggleButton;
64 import org.compiere.util.Ini;
65 import org.compiere.util.MiniBrowser;
66 import org.compiere.util.ValueNamePair;
67
68 import sun.awt.AppContext;
69
70 /**
71  * Compiere PLAF Editor.
72  * <p>
73  * start with <code>new CompierePLAFEditor()</code>
74  *
75  * @author Jorg Janke
76  * @version $Id: CompierePLAFEditor.java,v 1.26 2003/09/27 11:08:52 jjanke Exp $
77  */

78 public class CompierePLAFEditor extends JDialog JavaDoc
79     implements ActionListener JavaDoc
80 {
81     /**
82      * Default Constructor
83      * Don't Show Example
84      */

85     public CompierePLAFEditor()
86     {
87         super();
88         init(false);
89     } // CompierePLAFEditor
90

91     /**
92      * Constructor
93      * @param showExample if true, show Example
94      */

95     public CompierePLAFEditor (boolean showExample)
96     {
97         super();
98         init(showExample);
99     } // CompierePLAFEditor
100

101     /**
102      * Modal Dialog Constructor
103      * @param owner
104      * @param showExample if true, show Example
105      */

106     public CompierePLAFEditor(Dialog JavaDoc owner, boolean showExample)
107     {
108         super(owner, "", true);
109         init(showExample);
110     } // CompierePLAFEditor
111

112     /**
113      * Modal Frame Constructor
114      * @param owner
115      * @param showExample if true, show Example
116      */

117     public CompierePLAFEditor(Frame JavaDoc owner, boolean showExample)
118     {
119         super(owner, "", true);
120         init(showExample);
121     } // CompierePLAFEditor
122

123     /*************************************************************************/
124
125     /**
126      * Init Editor
127      * @param showExample if true, show Example
128      */

129     private void init (boolean showExample)
130     {
131         try
132         {
133             jbInit();
134             dynInit();
135
136             // Display
137
example.setVisible(showExample);
138             CompierePLAF.showCenterScreen(this);
139         }
140         catch(Exception JavaDoc e)
141         {
142             System.err.println("CompierePLAFEditor.init");
143             e.printStackTrace();
144         }
145     // CompiereUtils.setNotBuffered(this);
146
} // PLAFEditor
147

148     /** Diable Theme Field */
149     private boolean m_setting = false;
150     /** We did test for true color */
151     private boolean m_colorTest = false;
152
153     static ResourceBundle JavaDoc s_res = ResourceBundle.getBundle("org.compiere.plaf.PlafRes");
154     static Object JavaDoc[] s_columns = new Object JavaDoc[] {"-0-", "-1-", "-2-", "-3-", "-O-", "-l-"};
155     static Object JavaDoc[][] s_data = new Object JavaDoc[][] {
156         {"-00-", "-01-", "-02-", "-03-", "-0O-", "-0l-"},
157         {"-10-", "-11-", "-12-", "-13-", "-1O-", "-1l-"},
158         {"-20-", "-21-", "-22-", "-23-", "-2O-", "-2l-"},
159         {"-30-", "-31-", "-32-", "-33-", "-3O-", "-3l-"},
160         {"-O0-", "-O1-", "-O2-", "-O3-", "-OO-", "-Ol-"},
161         {"-l0-", "-l1-", "-l2-", "-l3-", "-lO-", "-ll-"}};
162     static Object JavaDoc[] s_pos = new Object JavaDoc[] {"Top", "Left", "Bottom", "Right"};
163
164     private CPanel mainPanel = new CPanel(new BorderLayout JavaDoc());
165     private CPanel northPanel = new CPanel();
166     private CPanel southPanel = new CPanel();
167     private CButton bOK = CompierePLAF.getOKButton();
168     private CButton bCancel = CompierePLAF.getCancelButton();
169     private CButton bHelp = new CButton(); /** @todo Help Button */
170     private GridBagLayout JavaDoc northLayout = new GridBagLayout JavaDoc();
171     private CLabel lfLabel = new CLabel();
172     private CComboBox lfField = new CComboBox(CompierePLAF.getPLAFs());
173     private CLabel themeLabel = new CLabel();
174     private CComboBox themeField = new CComboBox(CompierePLAF.getThemes());
175     private CButton cButton = new CButton();
176     private FlowLayout JavaDoc southLayout = new FlowLayout JavaDoc();
177     private CButton rButton = new CButton();
178     private CButton bSetColor = new CButton();
179     private CCheckBox cDefault = new CCheckBox();
180     private CComboBox blindField = new CComboBox(ColorBlind.COLORBLIND_TYPE);
181     private CLabel blindLabel = new CLabel();
182     private BorderLayout JavaDoc mainLayout = new BorderLayout JavaDoc();
183     //
184
private CTabbedPane example = new CTabbedPane();
185     private CPanel jPanel1 = new CPanel();
186     private TitledBorder JavaDoc exampleBorder;
187     private CPanel jPanel2 = new CPanel();
188     private JLabel JavaDoc jLabel1 = new JLabel JavaDoc();
189     private JTextField JavaDoc jTextField1 = new JTextField JavaDoc();
190     private JCheckBox JavaDoc jCheckBox1 = new JCheckBox JavaDoc();
191     private JRadioButton JavaDoc jRadioButton1 = new JRadioButton JavaDoc();
192     private CButton jButton1 = new CButton();
193     private CToggleButton jToggleButton1 = new CToggleButton();
194     private CComboBox jComboBox1 = new CComboBox(s_columns);
195     private JTextArea JavaDoc jTextArea1 = new JTextArea JavaDoc();
196     private JTextPane JavaDoc jTextPane1 = new JTextPane JavaDoc();
197     private JEditorPane JavaDoc jEditorPane1 = new JEditorPane JavaDoc();
198     private JPasswordField JavaDoc jPasswordField1 = new JPasswordField JavaDoc();
199     private JList JavaDoc jList1 = new JList JavaDoc(s_columns);
200     private JSplitPane JavaDoc jSplitPane1 = new JSplitPane JavaDoc();
201     private BorderLayout JavaDoc borderLayout1 = new BorderLayout JavaDoc();
202     private JScrollPane JavaDoc jScrollPane1 = new JScrollPane JavaDoc();
203     private JTree JavaDoc jTree1 = new JTree JavaDoc();
204     private JScrollPane JavaDoc jScrollPane2 = new JScrollPane JavaDoc();
205     private JTable JavaDoc jTable1 = new JTable JavaDoc(s_data, s_columns);
206     private GridBagLayout JavaDoc gridBagLayout1 = new GridBagLayout JavaDoc();
207     private CPanel jPanelFlat = new CPanel(new CompiereColor(new Color JavaDoc(255,205,255), true));
208     private CPanel jPanelGradient = new CPanel(new CompiereColor(new Color JavaDoc(233,210,210), new Color JavaDoc(217,210,233)));
209     private CPanel jPanelTexture = new CPanel(new CompiereColor(CompiereColor.class.getResource("vincent.jpg"), Color.lightGray, 0.7f));
210     private CPanel jPanelLines = new CPanel(new CompiereColor(new Color JavaDoc(178,181,205), new Color JavaDoc(193,193,205), 1.0f, 5));
211     private JButton JavaDoc jButtonFlat = new JButton JavaDoc();
212     private CButton jButtonGardient = new CButton();
213     private JButton JavaDoc jButtonTexture = new JButton JavaDoc();
214     private CButton jButtonLines = new CButton();
215     private JComboBox JavaDoc jComboBoxFlat = new JComboBox JavaDoc(s_pos);
216     private JTextField JavaDoc jTextFieldFlat = new JTextField JavaDoc();
217     private JLabel JavaDoc jLabelFlat = new JLabel JavaDoc();
218     private CComboBox jComboBoxGradient = new CComboBox(s_pos);
219     private CTextField jTextFieldGradient = new CTextField();
220     private CLabel jLabelGradient = new CLabel();
221     private JComboBox JavaDoc jComboBoxTexture = new JComboBox JavaDoc(s_pos);
222     private JTextField JavaDoc jTextFieldTexture = new JTextField JavaDoc();
223     private JLabel JavaDoc jLabelTexture = new JLabel JavaDoc();
224     private CComboBox jComboBoxLines = new CComboBox(s_pos);
225     private CTextField jTextFieldLines = new CTextField();
226     private CLabel jLabelLines = new CLabel();
227     private CCheckBox jCheckBoxLines = new CCheckBox();
228     private JCheckBox JavaDoc jCheckBoxTexture = new JCheckBox JavaDoc();
229     private CCheckBox jCheckBoxGradient = new CCheckBox();
230     private JCheckBox JavaDoc jCheckBoxFlat = new JCheckBox JavaDoc();
231
232     /**
233      * Static Layout
234      * @throws Exception
235      */

236     private void jbInit() throws Exception JavaDoc
237     {
238         this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
239         this.setTitle(s_res.getString("LookAndFeelEditor") + " " + CompierePLAF.VERSION);
240         mainPanel.setLayout(mainLayout);
241         mainLayout.setHgap(5);
242         mainLayout.setVgap(5);
243         jTextFieldFlat.setColumns(10);
244         jTextFieldGradient.setColumns(10);
245         jTextFieldTexture.setColumns(10);
246         jTextFieldLines.setColumns(10);
247         jCheckBoxLines.setText("jCheckBox");
248         jCheckBoxTexture.setText("jCheckBox");
249         jCheckBoxGradient.setText("jCheckBox");
250         jCheckBoxFlat.setText("jCheckBox");
251         jPanelGradient.setToolTipText("Indented Level 1");
252         jPanelTexture.setToolTipText("Indented Level 2");
253         jPanelLines.setToolTipText("Indented Level 1");
254         this.getContentPane().add(mainPanel, BorderLayout.CENTER);
255         CompiereColor.setBackground(this);
256         //
257
lfLabel.setText(s_res.getString("LookAndFeel"));
258         lfField.addActionListener(this);
259         themeLabel.setText(s_res.getString("Theme"));
260         themeField.addActionListener(this);
261         cButton.setText(s_res.getString("EditCompiereTheme"));
262         cButton.addActionListener(this);
263         rButton.setText(s_res.getString("Reset"));
264         rButton.addActionListener(this);
265         cDefault.setText(s_res.getString("SetDefault"));
266         cDefault.addActionListener(this);
267         bSetColor.setText(s_res.getString("SetDefaultColor"));
268         bSetColor.addActionListener(this);
269         blindLabel.setText(s_res.getString("ColorBlind"));
270         blindField.addActionListener(this);
271         //
272
bOK.addActionListener(this);
273         bCancel.addActionListener(this);
274         bHelp.addActionListener(this);
275         //
276
northPanel.setLayout(northLayout);
277         southPanel.setLayout(southLayout);
278         southLayout.setAlignment(FlowLayout.RIGHT);
279         //
280
exampleBorder = new TitledBorder JavaDoc(s_res.getString("Example"));
281         example.setBorder(exampleBorder);
282
283         jLabel1.setText("jLabel");
284         jTextField1.setText("jTextField");
285         jCheckBox1.setText("jCheckBox");
286         jRadioButton1.setText("jRadioButton");
287         jButton1.setText("jButton");
288         jToggleButton1.setText("jToggleButton");
289         jTextArea1.setText("jTextArea");
290         jTextPane1.setText("jTextPane");
291         jEditorPane1.setText("jEditorPane");
292         jPasswordField1.setText("jPasswordField");
293         jPanel2.setLayout(borderLayout1);
294         jPanel1.setLayout(gridBagLayout1);
295         jScrollPane1.setPreferredSize(new Dimension JavaDoc(100, 200));
296         jScrollPane2.setPreferredSize(new Dimension JavaDoc(100, 200));
297         jButtonFlat.setText("Confirm");
298         jButtonGardient.setText("Input");
299         jButtonTexture.setText("Message");
300         jButtonLines.setText("Error");
301         jTextFieldFlat.setText("jTextField");
302         jLabelFlat.setText("jLabel");
303         jTextFieldGradient.setText("jTextField");
304         jLabelGradient.setText("jLabel");
305         jTextFieldTexture.setText("jTextField");
306         jLabelTexture.setText("jLabel");
307         jTextFieldLines.setText("jTextField");
308         jLabelLines.setText("jLabel");
309         mainPanel.add(northPanel, BorderLayout.NORTH);
310         northPanel.add(lfLabel, new GridBagConstraints JavaDoc(0, 0, 1, 1, 0.0, 0.0
311             ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets JavaDoc(12, 12, 5, 5), 0, 0));
312         northPanel.add(lfField, new GridBagConstraints JavaDoc(1, 0, 1, 1, 0.0, 0.0
313             ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets JavaDoc(12, 0, 5, 12), 0, 0));
314         northPanel.add(themeLabel, new GridBagConstraints JavaDoc(0, 1, 1, 1, 0.0, 0.0
315             ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets JavaDoc(0, 12, 5, 5), 0, 0));
316         northPanel.add(themeField, new GridBagConstraints JavaDoc(1, 1, 1, 1, 0.0, 0.0
317             ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets JavaDoc(0, 0, 5, 12), 0, 0));
318         northPanel.add(cButton, new GridBagConstraints JavaDoc(1, 2, 1, 1, 0.0, 0.0
319             ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets JavaDoc(5, 0, 5, 12), 0, 0));
320         northPanel.add(rButton, new GridBagConstraints JavaDoc(0, 2, 1, 1, 0.0, 0.0
321             ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets JavaDoc(5, 12, 5, 5), 0, 0));
322         northPanel.add(bSetColor, new GridBagConstraints JavaDoc(1, 3, 1, 1, 0.0, 0.0
323             ,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets JavaDoc(5, 0, 5, 12), 0, 0));
324         northPanel.add(cDefault, new GridBagConstraints JavaDoc(0, 3, 1, 1, 0.0, 0.0
325             ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets JavaDoc(5, 12, 5, 5), 0, 0));
326         northPanel.add(blindField, new GridBagConstraints JavaDoc(1, 4, 1, 1, 0.0, 0.0
327             ,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets JavaDoc(5, 0, 5, 12), 0, 0));
328         northPanel.add(blindLabel, new GridBagConstraints JavaDoc(0, 4, 1, 1, 0.0, 0.0
329             ,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets JavaDoc(5, 12, 5, 5), 0, 0));
330         mainPanel.add(southPanel, BorderLayout.SOUTH);
331         southPanel.add(bCancel, null);
332         southPanel.add(bOK, null);
333         mainPanel.add(example, BorderLayout.CENTER);
334         example.add(jPanel1, "JPanel");
335         jPanel1.add(jTextPane1, new GridBagConstraints JavaDoc(2, 3, 1, 1, 0.0, 0.2
336             ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
337         jPanel1.add(jEditorPane1, new GridBagConstraints JavaDoc(1, 3, 1, 1, 0.0, 0.2
338             ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
339         jPanel1.add(jList1, new GridBagConstraints JavaDoc(1, 2, 1, 1, 0.0, 0.2
340             ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
341         jPanel1.add(jLabel1, new GridBagConstraints JavaDoc(0, 0, 1, 1, 0.0, 0.0
342             ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
343         jPanel1.add(jTextField1, new GridBagConstraints JavaDoc(1, 0, 1, 1, 0.0, 0.0
344             ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
345         jPanel1.add(jCheckBox1, new GridBagConstraints JavaDoc(0, 1, 1, 1, 0.0, 0.0
346             ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets JavaDoc(1, 1, 1, 1), 0, 0));
347         jPanel1.add(jRadioButton1, new GridBagConstraints JavaDoc(1, 1, 1, 1, 0.0, 0.0
348             ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
349         jPanel1.add(jButton1, new GridBagConstraints JavaDoc(2, 0, 1, 1, 0.0, 0.1
350             ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
351         jPanel1.add(jToggleButton1, new GridBagConstraints JavaDoc(2, 1, 1, 1, 0.0, 0.1
352             ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
353         jPanel1.add(jTextArea1, new GridBagConstraints JavaDoc(0, 3, 1, 1, 0.0, 0.2
354             ,GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
355         jPanel1.add(jComboBox1, new GridBagConstraints JavaDoc(0, 2, 1, 1, 0.0, 0.0
356             ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
357         jPanel1.add(jPasswordField1, new GridBagConstraints JavaDoc(2, 2, 1, 1, 0.0, 0.0
358             ,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets JavaDoc(5, 5, 5, 5), 0, 0));
359         example.add(jPanel2, "JPanel");
360         jPanel2.add(jSplitPane1, BorderLayout.CENTER);
361         jSplitPane1.add(jScrollPane1, JSplitPane.LEFT);
362         jSplitPane1.add(jScrollPane2, JSplitPane.RIGHT);
363         jPanelFlat.setName("FlatP");
364         jPanelGradient.setName("GradientP");
365         jPanelTexture.setName("TextureP");
366         jPanelLines.setName("LineP");
367         example.add(jPanelFlat, "jPanel Flat");
368         jPanelFlat.add(jButtonFlat, null);
369         jPanelFlat.add(jComboBoxFlat, null);
370         example.add(jPanelGradient, "jPanel Gradient 1");
371         jPanelGradient.add(jButtonGardient, null);
372         jPanelGradient.add(jComboBoxGradient, null);
373         jPanelGradient.add(jLabelGradient, null);
374         jPanelGradient.add(jTextFieldGradient, null);
375         example.add(jPanelTexture, "jPanel Texture 2");
376         jPanelTexture.add(jButtonTexture, null);
377         jPanelTexture.add(jComboBoxTexture, null);
378         jPanelTexture.add(jLabelTexture, null);
379         jPanelTexture.add(jTextFieldTexture, null);
380         example.add(jPanelLines, "jPanel Lines 1");
381         jPanelLines.add(jButtonLines, null);
382         jPanelLines.add(jComboBoxLines, null);
383         jPanelLines.add(jLabelLines, null);
384         jPanelLines.add(jTextFieldLines, null);
385         jScrollPane2.getViewport().add(jTable1, null);
386         jScrollPane1.getViewport().add(jTree1, null);
387         jPanelFlat.add(jLabelFlat, null);
388         jPanelFlat.add(jTextFieldFlat, null);
389         jPanelLines.add(jCheckBoxLines, null);
390         jPanelTexture.add(jCheckBoxTexture, null);
391         jPanelGradient.add(jCheckBoxGradient, null);
392         jPanelFlat.add(jCheckBoxFlat, null);
393     } // jbInit
394

395     /**
396      * Dynamic Init
397      */

398     private void dynInit()
399     {
400         setLFSelection();
401         //
402
jPanelGradient.setTabLevel(1);
403         jPanelTexture.setTabLevel(2);
404         jPanelLines.setTabLevel(1);
405         //
406
jComboBoxFlat.addActionListener(this);
407         jComboBoxGradient.addActionListener(this);
408         jComboBoxTexture.addActionListener(this);
409         jComboBoxLines.addActionListener(this);
410         //
411
jButton1.addActionListener(this);
412         jButtonFlat.addActionListener(this);
413         jButtonGardient.addActionListener(this);
414         jButtonTexture.addActionListener(this);
415         jButtonLines.addActionListener(this);
416         //
417
CompierePLAF.setPLAF(this);
418     } // dynInit
419

420     /**
421      * Set Picks From Environment
422      */

423     private void setLFSelection()
424     {
425         m_setting = true;
426         // Search for PLAF
427
ValueNamePair plaf = null;
428         LookAndFeel JavaDoc lookFeel = UIManager.getLookAndFeel();
429         String JavaDoc look = lookFeel.getClass().getName();
430         for (int i = 0; i < CompierePLAF.getPLAFs().length; i++)
431         {
432             ValueNamePair vp = CompierePLAF.getPLAFs()[i];
433             if (vp.getValue().equals(look))
434             {
435                 plaf = vp;
436                 break;
437             }
438         }
439         if (plaf != null)
440             lfField.setSelectedItem(plaf);
441
442
443         // Search for Theme
444
MetalTheme JavaDoc t = null;
445         ValueNamePair theme = null;
446         boolean metal = UIManager.getLookAndFeel() instanceof MetalLookAndFeel JavaDoc;
447         themeField.setModel(new DefaultComboBoxModel JavaDoc(CompierePLAF.getThemes()));
448         if (metal)
449         {
450             theme = null;
451             AppContext context = AppContext.getAppContext();
452             t = (MetalTheme JavaDoc)context.get("currentMetalTheme");
453             if (t != null)
454             {
455                 String JavaDoc lookTheme = t.getName();
456                 for (int i = 0; i < CompierePLAF.getThemes().length; i++)
457                 {
458                     ValueNamePair vp = CompierePLAF.getThemes()[i];
459                     if (vp.getName().equals(lookTheme))
460                     {
461                         theme = vp;
462                         break;
463                     }
464                 }
465             }
466             if (theme != null)
467                 themeField.setSelectedItem(theme);
468             else
469                 themeField.setSelectedIndex(0);
470         }
471         m_setting = false;
472     // System.out.println("CompierePLAFEditor.setLFSelection - " + lookFeel.getName() + "=" + plaf + " - " + t.getName() + "=" + theme);
473
} // setLFSelection
474

475     /*************************************************************************/
476
477     /**
478      * ActionListener
479      * @param e
480      */

481     public void actionPerformed(ActionEvent JavaDoc e)
482     {
483         setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
484
485         // OK - Save & Finish
486
if (e.getSource() == bOK)
487         {
488             Ini.saveProperties(true);
489             dispose();
490         }
491         // Cancel - Finish
492
else if (e.getSource() == bCancel)
493         {
494             dispose();
495         }
496         else if (e.getSource() == bHelp)
497         {
498             new MiniBrowser("http://www.compiere.org/looks/help.html");
499         }
500
501         // Look & Feel changed
502
else if (e.getSource() == lfField && !m_setting)
503         {
504             m_setting = true; // disable Theme setting
505
// set new theme
506
CompierePLAF.setPLAF((ValueNamePair)lfField.getSelectedItem(), null, this);
507             setLFSelection();
508             setBackgroundToTheme();
509             CompierePLAF.setPLAF(this); // twice ??
510
m_setting = false; // enable Theme setting
511
}
512         // Theme Field Changed
513
else if (e.getSource() == themeField && !m_setting)
514         {
515             Ini.setProperty(Ini.P_UI_THEME, themeField.getSelectedItem().toString());
516             CompierePLAF.setPLAF((ValueNamePair)lfField.getSelectedItem(), (ValueNamePair)themeField.getSelectedItem(), this);
517             CompiereTheme.setTheme(); // copy Theme
518
setBackgroundToTheme();
519             CompierePLAF.setPLAF(this); // twice (??)
520
}
521
522         // Start Compiere Theme Editor
523
else if (e.getSource() == cButton)
524         {
525             new CompiereThemeEditor(this);
526             setBackgroundToTheme();
527         }
528
529         // Reset PLAFs
530
else if (e.getSource() == rButton)
531         {
532             CompierePLAF.reset(this);
533             setLFSelection();
534             ColorBlind.setColorType(ColorBlind.NORMAL);
535             CompierePLAF.setPLAF(this); // twice ??
536
}
537
538         // Set Default Background Color
539
else if (e.getSource() == bSetColor)
540         {
541             CompiereColor cc = CompiereColorEditor.showDialog(this, CompierePanelUI.getDefaultBackground());
542             CompierePanelUI.setDefaultBackground(cc);
543             CompierePLAF.updateUI(this);
544             Ini.setProperty(CompiereTheme.P_CompiereColor, cc.toString());
545         }
546         // Set Background as Default
547
else if (e.getSource() == cDefault)
548         {
549             CompierePanelUI.setSetDefault(cDefault.isSelected());
550             CompierePLAF.updateUI(this);
551         }
552         // ColorBlind
553
else if (e.getSource() == blindField)
554         {
555             int sel = blindField.getSelectedIndex();
556             if (sel != ColorBlind.getColorType())
557             {
558                 // Test for True color
559
if (!m_colorTest)
560                 {
561                     m_colorTest = true;
562                     int size = Toolkit.getDefaultToolkit().getColorModel().getPixelSize();
563                     if (size < 24)
564                         JOptionPane.showMessageDialog(this,
565                             "Your environment has only a pixel size of " + size
566                             + ".\nTo see the effect, you need to have a pixel size of 24 (true color)",
567                             "Insufficient Color Capabilities",
568                             JOptionPane.ERROR_MESSAGE);
569                 }
570                 ColorBlind.setColorType(sel);
571                 CompierePLAF.updateUI(this);
572                 CompierePLAF.setPLAF(this); // twice (??)
573
}
574         }
575
576
577         // Change Tab Pacement
578
else if (e.getSource() == jComboBoxFlat || e.getSource() == jComboBoxGradient
579             || e.getSource() == jComboBoxTexture || e.getSource() == jComboBoxLines)
580         {
581             if (!m_setting)
582             {
583                 m_setting = true;
584                 int index = ((JComboBox JavaDoc)e.getSource()).getSelectedIndex();
585                 example.setTabPlacement(index+1);
586                 jComboBoxFlat.setSelectedIndex(index);
587                 jComboBoxGradient.setSelectedIndex(index);
588                 jComboBoxTexture.setSelectedIndex(index);
589                 jComboBoxLines.setSelectedIndex(index);
590                 m_setting = false;
591             }
592         }
593         // Display Options
594
else if (e.getSource() == jButtonFlat)
595             JOptionPane.showConfirmDialog(this, "Confirm Dialog");
596         else if (e.getSource() == jButtonGardient)
597             JOptionPane.showInputDialog(this, "Input Dialog");
598         else if (e.getSource() == jButtonTexture)
599             JOptionPane.showMessageDialog(this, "Message Dialog");
600         else if (e.getSource() == jButtonLines)
601             JOptionPane.showMessageDialog(this, "Message Dialog - Error", "Error", JOptionPane.ERROR_MESSAGE);
602
603         // Test
604
else if (e.getSource() == jButton1)
605         {
606         }
607
608         /********************/
609
610         // Metal
611
boolean metal = UIManager.getLookAndFeel() instanceof MetalLookAndFeel JavaDoc;
612         themeField.setEnabled(metal);
613         themeLabel.setEnabled(metal);
614
615         // ColorBlind - only with Compiere L&F & Theme
616
boolean enable = metal
617             && CompiereLookAndFeel.NAME.equals(lfField.getSelectedItem().toString())
618             && themeField.getSelectedItem() != null
619             && CompiereTheme.NAME.equals(themeField.getSelectedItem().toString());
620         blindField.setEnabled(enable);
621         blindLabel.setEnabled(enable);
622         if (e.getSource() != blindField && !enable)
623             blindField.setSelectedIndex(0);
624
625         // done
626
setCursor(Cursor.getDefaultCursor());
627     } // actionPerformed
628

629     /**
630      * Set CompiereColor Background to Theme Background
631      */

632     private void setBackgroundToTheme()
633     {
634         // Not flat for Compiere L&F & Theme
635
boolean notFlat = UIManager.getLookAndFeel() instanceof MetalLookAndFeel JavaDoc
636             && CompiereLookAndFeel.NAME.equals(lfField.getSelectedItem().toString())
637             && themeField.getSelectedItem() != null
638             && CompiereTheme.NAME.equals(themeField.getSelectedItem().toString());
639         CompiereColor cc = new CompiereColor(CompiereTheme.secondary3, !notFlat);
640         CompierePanelUI.setDefaultBackground(cc);
641         Ini.setProperty(CompiereTheme.P_CompiereColor, cc.toString());
642         CompierePLAF.updateUI(this);
643     } // setBackgroundToTheme
644

645
646     /**
647      * Dispose
648      * Exit, if there is no real owning parent (not modal) - shortcut
649      */

650     public void dispose()
651     {
652         super.dispose();
653         if (!isModal())
654             System.exit(0);
655     } // dispose
656

657 } // CompierePLAFEditor
658
Popular Tags