KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > aspectj > ajde > ui > swing > OptionsFrame


1 /*build_panel -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2  *
3  * This file is part of the IDE support for the AspectJ(tm)
4  * programming language; see http://aspectj.org
5  *
6  * The contents of this file are subject to the Mozilla Public License
7  * Version 1.1 (the "License"); you may not use this file except in
8  * compliance with the License. You may obtain a copy of the License at
9  * either http://www.mozilla.org/MPL/ or http://aspectj.org/MPL/.
10  *
11  * Software distributed under the License is distributed on an "AS IS" basis,
12  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13  * for the specific language governing rights and limitations under the
14  * License.
15  *
16  * The Original Code is AspectJ.
17  *
18  * The Initial Developer of the Original Code is Xerox Corporation. Portions
19  * created by Xerox Corporation are Copyright (C) 1999-2002 Xerox Corporation.
20  * All Rights Reserved.
21  *
22  * Contributor(s):
23  */

24
25 package org.aspectj.ajde.ui.swing;
26
27 import java.io.IOException JavaDoc;
28 import javax.swing.*;
29 import javax.swing.event.*;
30 import javax.swing.tree.*;
31 import java.awt.*;
32 import java.awt.event.*;
33 import javax.swing.border.*;
34 import java.util.*;
35 import org.aspectj.asm.*;
36 import org.aspectj.ajde.*;
37 import org.aspectj.ajde.ui.*;
38 import org.aspectj.asm.views.*;
39
40 /**
41  * UI for setting user-configureable options.
42  *
43  * @author Mik Kersten
44  */

45 public class OptionsFrame extends JFrame {
46
47     private static final String JavaDoc ABOUT_TEXT =
48         "<html>\n" +
49         "<body>\n" +
50         "<p><b>AspectJ Development Environment (AJDE) " + org.aspectj.compiler.Version.text + "</b></p>\n" +
51         "<p>Submit bugs at <a HREF=\"http://aspectj.org/bugs\">http://aspectj.org/bugs</a><br>\n" +
52         "For support questions email <a HREF=\"mailto:support@aspectj.org\">\n" +
53         "support@aspectj.org</a> </p>\n" +
54         "<p>The AspectJ compiler and core tools are distributed under the Mozilla Public \n" +
55         "License version 1.1.&nbsp; This license has been approved by the Open Source \n" +
56         "Initiative as conforming to the Open Source Definition.&nbsp; For more \n" +
57         "information and the license please visit <a HREF=\"http://aspectj.org/license\">\n" +
58         "http://aspectj.org/license</a></p>\n" +
59         "</body>\n" +
60         "</html>\n";
61
62     private JTabbedPane main_tabbedPane = new JTabbedPane();
63     private JPanel button_panel = new JPanel();
64     private JButton apply_button = new JButton();
65     private JButton cancel_button = new JButton();
66     private JButton ok_button = new JButton();
67     private TitledBorder titledBorder1;
68     private TitledBorder titledBorder2;
69     private TitledBorder titledBorder3;
70     private Border border1;
71     private TitledBorder titledBorder4;
72     private TitledBorder titledBorder5;
73     private Border border2;
74     private TitledBorder titledBorder6;
75     private Box temp_box = Box.createVerticalBox();
76     private Border border3;
77     private TitledBorder titledBorder7;
78     private Border border4;
79     private TitledBorder titledBorder8;
80     private Border border5;
81     private TitledBorder titledBorder9;
82     private Border border6;
83     private TitledBorder titledBorder10;
84     private ButtonGroup views_buttonGroup = new ButtonGroup();
85     private Border border7;
86     private TitledBorder titledBorder11;
87     private Border border8;
88     private TitledBorder titledBorder12;
89     private JPanel about_panel = new JPanel();
90     private BorderLayout borderLayout9 = new BorderLayout();
91     private JPanel jPanel1 = new JPanel();
92     private JEditorPane about_editorPane = new JEditorPane();
93     private BorderLayout borderLayout10 = new BorderLayout();
94
95     public OptionsFrame(IconRegistry icons) {
96         try {
97             jbInit();
98
99             this.setTitle("AJDE Settings");
100             this.setIconImage(((ImageIcon)icons.getBrowserOptionsIcon()).getImage());
101             this.setSize(500, 500);
102             this.setLocation(200, 100);
103
104             about_editorPane.setContentType("text/html");
105             about_editorPane.setText(ABOUT_TEXT);
106
107             addOptionsPanel(new BuildOptionsPanel());
108             loadOptions();
109        }
110         catch(Exception JavaDoc e) {
111             Ajde.getDefault().getErrorHandler().handleError("Could not open OptionsFrame", e);
112         }
113     }
114
115     /**
116      * Adds the panel in the second-to-last postion.
117      */

118     public void addOptionsPanel(OptionsPanel panel) {
119         main_tabbedPane.add(panel, main_tabbedPane.getComponentCount()-1);
120         loadOptions();
121     }
122
123     public void removeOptionsPanel(OptionsPanel panel) {
124         main_tabbedPane.remove(panel);
125     }
126
127     public void showPanel(OptionsPanel panel) {
128         setVisible(true);
129         main_tabbedPane.setSelectedComponent(panel);
130     }
131
132     private void loadOptions() {
133         try {
134             Component[] components = main_tabbedPane.getComponents();
135             for
136 (int i = 0; i < components.length; i++) {
137                 if (components[i] instanceof OptionsPanel) {
138                     ((OptionsPanel)components[i]).loadOptions();
139                 }
140             }
141         } catch (IOException JavaDoc ioe) {
142             Ajde.getDefault().getErrorHandler().handleError("Could not load options.", ioe);
143         }
144     }
145
146     private void saveOptions() {
147         try {
148             Component[] components = main_tabbedPane.getComponents();
149             for (int i = 0; i < components.length; i++) {
150                 if (components[i] instanceof OptionsPanel) {
151                     ((OptionsPanel)components[i]).saveOptions();
152                 }
153             }
154         } catch (IOException JavaDoc ioe) {
155             Ajde.getDefault().getErrorHandler().handleError("Could not load options.", ioe);
156         }
157     }
158
159     private void close() {
160         this.setVisible(false);
161     }
162
163     private void apply_button_actionPerformed(ActionEvent e) {
164         saveOptions();
165     }
166
167     private void ok_button_actionPerformed(ActionEvent e) {
168         saveOptions();
169         close();
170     }
171
172     private void cancel_button_actionPerformed(ActionEvent e) {
173         close();
174     }
175
176     private void jbInit() throws Exception JavaDoc {
177         titledBorder1 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158)),"Sorting");
178         titledBorder2 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(148, 145, 140)),"Associations (navigeable relations between sturcture nodes)");
179         titledBorder3 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158)),"Member Filtering (nodes to exclude from view)");
180         border1 = BorderFactory.createLineBorder(Color.black,2);
181         titledBorder4 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(148, 145, 140)),"Compile Options");
182         titledBorder5 = new TitledBorder("");
183         border2 = BorderFactory.createLineBorder(Color.black,2);
184         titledBorder6 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(148, 145, 140)),"Run Options");
185         border3 = BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158));
186         titledBorder7 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158)),"Granularity (all nodes below selected level will be hidden)");
187         border4 = BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158));
188         titledBorder8 = new TitledBorder(border4,"Member Visibility");
189         border5 = BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158));
190         titledBorder9 = new TitledBorder(border5,"Member Modifiers");
191         border6 = BorderFactory.createEmptyBorder();
192         titledBorder10 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(148, 145, 140)),"Structure View Properties");
193         border7 = BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158));
194         titledBorder11 = new TitledBorder(border7,"Member Kinds");
195         border8 = BorderFactory.createEtchedBorder(Color.white,new Color(148, 145, 140));
196         titledBorder12 = new TitledBorder(border8,"Build Paths");
197         apply_button.setFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
198         apply_button.setMaximumSize(new Dimension(70, 24));
199         apply_button.setMinimumSize(new Dimension(63, 24));
200         apply_button.setPreferredSize(new Dimension(70, 24));
201         apply_button.setText("Apply");
202         apply_button.addActionListener(new java.awt.event.ActionListener JavaDoc() {
203             public void actionPerformed(ActionEvent e) {
204                 apply_button_actionPerformed(e);
205             }
206         });
207         cancel_button.setFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
208         cancel_button.setMaximumSize(new Dimension(70, 24));
209         cancel_button.setMinimumSize(new Dimension(67, 24));
210         cancel_button.setPreferredSize(new Dimension(70, 24));
211         cancel_button.setText("Cancel");
212         cancel_button.addActionListener(new java.awt.event.ActionListener JavaDoc() {
213             public void actionPerformed(ActionEvent e) {
214                 cancel_button_actionPerformed(e);
215             }
216         });
217         ok_button.setFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
218         ok_button.setMaximumSize(new Dimension(70, 24));
219         ok_button.setMinimumSize(new Dimension(49, 24));
220         ok_button.setPreferredSize(new Dimension(70, 24));
221         ok_button.setText("OK");
222         ok_button.addActionListener(new java.awt.event.ActionListener JavaDoc() {
223             public void actionPerformed(ActionEvent e) {
224                 ok_button_actionPerformed(e);
225             }
226         });
227         main_tabbedPane.setFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
228         titledBorder1.setTitle("Ordering (sort order of nodes)");
229         titledBorder1.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
230         titledBorder2.setTitle("Associations (navigeable relations between structure nodes)");
231         titledBorder2.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
232         titledBorder3.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
233         titledBorder6.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
234         titledBorder5.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
235         titledBorder4.setTitle("Compiler Flags");
236         titledBorder4.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
237         titledBorder7.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
238         titledBorder8.setTitle("Access Modifiers");
239         titledBorder8.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
240         titledBorder9.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
241         titledBorder10.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
242         titledBorder11.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
243         titledBorder12.setTitleFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
244         about_panel.setLayout(borderLayout9);
245         jPanel1.setLayout(borderLayout10);
246         about_editorPane.setBackground(javax.swing.UIManager.getColor("OptionPane.background"));
247         about_editorPane.setFont(new java.awt.Font JavaDoc("Dialog", 0, 11));
248         about_editorPane.setEditable(false);
249         about_panel.add(jPanel1, BorderLayout.CENTER);
250         jPanel1.add(about_editorPane, BorderLayout.CENTER);
251         main_tabbedPane.add(about_panel, "About AJDE");
252         this.getContentPane().add(button_panel, BorderLayout.SOUTH);
253         button_panel.add(ok_button, null);
254         button_panel.add(cancel_button, null);
255         button_panel.add(apply_button, null);
256         this.getContentPane().add(main_tabbedPane, BorderLayout.CENTER);
257     }
258 }
Popular Tags