/* ******************************************************************* * Copyright (c) 1999-2001 Xerox Corporation, * 2002 Palo Alto Research Center, Incorporated (PARC). * All rights reserved. * This program and the accompanying materials are made available * under the terms of the Eclipse Public License v1.0 * which accompanies this distribution and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Xerox/PARC initial implementation * Helen Hawkins Converted to new interface (bug 148190) * ******************************************************************/ package org.aspectj.ajde.ui.swing; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.io.IOException; import java.util.Date; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.JTextArea; import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.border.TitledBorder; import org.aspectj.ajde.Ajde; import org.aspectj.ajde.IconRegistry; import org.aspectj.bridge.IMessage; import org.aspectj.bridge.Message; import org.aspectj.bridge.Version; /** * UI for setting user-configureable options. * * @author Mik Kersten */ 00049 public class OptionsFrame extends JFrame { private static final long serialVersionUID = -859222442871124487L; // XXX using \n b/c JTextArea.setLineWrap(true) lineates inside words. private static final String ABOUT_TEXT = "\nThe AspectJ compiler and core tools are produced by the\n" + "AspectJ project.\n\n" + "This software is distributed under the Eclipse Public License\n" + "version 1.0, approved by the Open Source Initiative as\n" + "conforming to the Open Source Definition.\n\n" + "For support or for more information about the AspectJ\n" + "project or the license, visit the project home page at\n" + " http://eclipse.org/aspectj\n\n" + "If you find a bug (not solved by the documentation in the\n" + "Development Environment Guide available with this release,\n" + "any release notes, or the bug database), please submit steps\n" + "to reproduce the bug (using the IDE component) at:\n" + " http://bugs.eclipse.org/bugs/enter_bug.cgi?product=AspectJ"; private JTabbedPane main_tabbedPane = new JTabbedPane(); private JPanel button_panel = new JPanel(); private JButton apply_button = new JButton(); private JButton cancel_button = new JButton(); private JButton ok_button = new JButton(); private TitledBorder titledBorder1; private TitledBorder titledBorder2; private TitledBorder titledBorder3; // private Border border1; private TitledBorder titledBorder4; private TitledBorder titledBorder5; // private Border border2; private TitledBorder titledBorder6; // private Box temp_box = Box.createVerticalBox(); // private Border border3; private TitledBorder titledBorder7; private Border border4; private TitledBorder titledBorder8; private Border border5; private TitledBorder titledBorder9; // private Border border6; private TitledBorder titledBorder10; // private ButtonGroup views_buttonGroup = new ButtonGroup(); private Border border7; private TitledBorder titledBorder11; private Border border8; private TitledBorder titledBorder12; private JPanel about_panel = new JPanel(); private BorderLayout borderLayout9 = new BorderLayout(); JTextArea jTextArea1 = new JTextArea(); JPanel jPanel1 = new JPanel(); JLabel version_label = new JLabel(); JLabel jLabel1 = new JLabel(); BorderLayout borderLayout1 = new BorderLayout(); Border border9; JLabel built_label = new JLabel(); public OptionsFrame(IconRegistry icons) { try { jbInit(); this.setTitle("AJDE Settings"); this.setIconImage(((ImageIcon)icons.getBrowserOptionsIcon()).getImage()); this.setSize(500, 500); this.setLocation(200, 100); version_label.setText("Version: " + Version.text); built_label.setText("Built: " + new Date(Version.getTime()).toString()); } catch(Exception e) { Message msg = new Message("Could not open OptionsFrame.",IMessage.ERROR,e,null); Ajde.getDefault().getMessageHandler().handleMessage(msg); } } /** * Adds the panel in the second-to-last postion. */ 00127 public void addOptionsPanel(OptionsPanel panel) { main_tabbedPane.add(panel, main_tabbedPane.getComponentCount()-1); try { panel.loadOptions(); } catch (IOException e) { Message msg = new Message("Could not load options.",IMessage.ERROR,e,null); Ajde.getDefault().getMessageHandler().handleMessage(msg); } } public void removeOptionsPanel(OptionsPanel panel) { main_tabbedPane.remove(panel); } public void showPanel(OptionsPanel panel) { setVisible(true); main_tabbedPane.setSelectedComponent(panel); } // // private void loadOptions() { // try { // Component[] components = main_tabbedPane.getComponents(); // for (int i = 0; i < components.length; i++) { // if (components[i] instanceof OptionsPanel) { // ((OptionsPanel)components[i]).loadOptions(); // } // } // } catch (IOException ioe) { // Message msg = new Message("Could not load options.",IMessage.ERROR,ioe,null); // Ajde.getDefault().getMessageHandler().handleMessage(msg); // } // } private void saveOptions() { try { Component[] components = main_tabbedPane.getComponents(); for (int i = 0; i < components.length; i++) { if (components[i] instanceof OptionsPanel) { ((OptionsPanel)components[i]).saveOptions(); } } } catch (IOException ioe) { Message msg = new Message("Could not load options.",IMessage.ERROR,ioe,null); Ajde.getDefault().getMessageHandler().handleMessage(msg); } } private void close() { this.setVisible(false); } private void apply_button_actionPerformed(ActionEvent e) { saveOptions(); } private void ok_button_actionPerformed(ActionEvent e) { saveOptions(); close(); } private void cancel_button_actionPerformed(ActionEvent e) { close(); } private void jbInit() throws Exception { titledBorder1 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158)),"Sorting"); titledBorder2 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(148, 145, 140)),"Associations (navigeable relations between sturcture nodes)"); titledBorder3 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158)),"Member Filtering (nodes to exclude from view)"); BorderFactory.createLineBorder(Color.black,2); titledBorder4 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(148, 145, 140)),"Compile Options"); titledBorder5 = new TitledBorder(""); BorderFactory.createLineBorder(Color.black,2); titledBorder6 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(148, 145, 140)),"Run Options"); BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158)); titledBorder7 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158)),"Granularity (all nodes below selected level will be hidden)"); border4 = BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158)); titledBorder8 = new TitledBorder(border4,"Member Visibility"); border5 = BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158)); titledBorder9 = new TitledBorder(border5,"Member Modifiers"); BorderFactory.createEmptyBorder(); titledBorder10 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(148, 145, 140)),"Structure View Properties"); border7 = BorderFactory.createEtchedBorder(Color.white,new Color(156, 156, 158)); titledBorder11 = new TitledBorder(border7,"Member Kinds"); border8 = BorderFactory.createEtchedBorder(Color.white,new Color(148, 145, 140)); titledBorder12 = new TitledBorder(border8,"Build Paths"); border9 = BorderFactory.createEmptyBorder(6,6,6,6); jPanel1.setLayout(borderLayout1); jLabel1.setFont(new java.awt.Font("Dialog", 1, 14)); jLabel1.setText("AspectJ Development Environment (AJDE)"); version_label.setFont(new java.awt.Font("Dialog", 1, 12)); version_label.setText("Version: "); apply_button.setFont(new java.awt.Font("Dialog", 0, 11)); apply_button.setMaximumSize(new Dimension(70, 24)); apply_button.setMinimumSize(new Dimension(63, 24)); apply_button.setPreferredSize(new Dimension(70, 24)); apply_button.setText("Apply"); apply_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { apply_button_actionPerformed(e); } }); cancel_button.setFont(new java.awt.Font("Dialog", 0, 11)); cancel_button.setMaximumSize(new Dimension(70, 24)); cancel_button.setMinimumSize(new Dimension(67, 24)); cancel_button.setPreferredSize(new Dimension(70, 24)); cancel_button.setText("Cancel"); cancel_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { cancel_button_actionPerformed(e); } }); ok_button.setFont(new java.awt.Font("Dialog", 0, 11)); ok_button.setMaximumSize(new Dimension(70, 24)); ok_button.setMinimumSize(new Dimension(49, 24)); ok_button.setPreferredSize(new Dimension(70, 24)); ok_button.setText("OK"); ok_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { ok_button_actionPerformed(e); } }); main_tabbedPane.setFont(new java.awt.Font("Dialog", 0, 11)); titledBorder1.setTitle("Ordering (sort order of nodes)"); titledBorder1.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder2.setTitle("Associations (navigeable relations between structure nodes)"); titledBorder2.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder3.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder6.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder5.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder4.setTitle("AjCompiler Flags"); titledBorder4.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder7.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder8.setTitle("Access Modifiers"); titledBorder8.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder9.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder10.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder11.setTitleFont(new java.awt.Font("Dialog", 0, 11)); titledBorder12.setTitleFont(new java.awt.Font("Dialog", 0, 11)); about_panel.setLayout(borderLayout9); jTextArea1.setBackground(UIManager.getColor("ColorChooser.background")); jTextArea1.setFont(new java.awt.Font("SansSerif", 0, 12)); jTextArea1.setEditable(false); jTextArea1.setText(ABOUT_TEXT); about_panel.setBorder(border9); built_label.setText("Built: "); built_label.setFont(new java.awt.Font("Dialog", 1, 12)); main_tabbedPane.add(about_panel, "About AJDE"); this.getContentPane().add(button_panel, BorderLayout.SOUTH); button_panel.add(ok_button, null); button_panel.add(cancel_button, null); button_panel.add(apply_button, null); this.getContentPane().add(main_tabbedPane, BorderLayout.CENTER); about_panel.add(jTextArea1, BorderLayout.CENTER); about_panel.add(jPanel1, BorderLayout.NORTH); jPanel1.add(jLabel1, BorderLayout.NORTH); jPanel1.add(version_label, BorderLayout.CENTER); jPanel1.add(built_label, BorderLayout.SOUTH); } }