source: ether_statistics/service/implementation/gov/noaa/pmel/sgt/beans/PanelHolderPropertyPanel.java @ 569

Last change on this file since 569 was 569, checked in by vmipsl, 12 years ago

Nouveau projet

File size: 6.7 KB
Line 
1/*
2 * $Id: PanelHolderPropertyPanel.java,v 1.4 2003/08/27 23:29:40 dwd Exp $
3 *
4 * This software is provided by NOAA for full, free and open release.  It is
5 * understood by the recipient/user that NOAA assumes no liability for any
6 * errors contained in the code.  Although this software is released without
7 * conditions or restrictions in its use, it is expected that appropriate
8 * credit be given to its author and to the National Oceanic and Atmospheric
9 * Administration should the software be included by the recipient as an
10 * element in other product development.
11 */
12
13package gov.noaa.pmel.sgt.beans;
14
15import java.awt.*;
16import javax.swing.*;
17import javax.swing.border.*;
18import java.awt.event.ActionEvent;
19import java.awt.event.ActionListener;
20import javax.swing.event.ChangeEvent;
21import javax.swing.event.ChangeListener;
22import java.awt.event.FocusEvent;
23import java.awt.event.FocusListener;
24
25import gov.noaa.pmel.sgt.swing.prop.ColorDialog;
26/**
27 * @author Donald Denbo
28 * @version $Revision: 1.4 $, $Date: 2003/08/27 23:29:40 $
29 * @since 3.0
30 **/
31class PanelHolderPropertyPanel extends PropertyPanel implements ActionListener, ChangeListener, FocusListener {
32  private boolean expert_ = false;
33  private PanelHolder pHolder_ = null;
34  private String[] pNames_ = {"Background", "Border", "Bounds", "Data Groups",
35    "Id", "Labels", "Legends", "Page Background", "Visible"};
36  private JComponent[] comps_ = new JComponent[pNames_.length];
37
38  public PanelHolderPropertyPanel(PanelHolder ph, boolean expert) {
39    super();
40    pHolder_ = ph;
41    pHolder_.addChangeListener(this);
42    expert_ = expert;
43    create();
44  }
45
46  public void setPanelHolder(PanelHolder ph, boolean expert) {
47    if(pHolder_ != null) pHolder_.removeChangeListener(this);
48    pHolder_ = ph;
49    pHolder_.addChangeListener(this);
50    expert_ = expert;
51    reset();
52  }
53
54  void create() {
55    int i = -1;
56    comps_[++i] = createColor(pHolder_.getBackground(), pNames_[i], this);
57    comps_[++i] = createBorder(pHolder_.getBorder(), pNames_[i], this);
58    Rectangle b = pHolder_.getBounds();
59    comps_[++i] = createLabel(b.x + ", " + b.y + ", " + b.width + ", " + b.height);
60    comps_[++i] = createLabel(pHolder_.getDataGroupSize());
61    comps_[++i] = createTextField(pHolder_.getId(), pNames_[i], this, !pHolder_.isInstantiated());
62    comps_[++i] = createLabel(pHolder_.getLabelSize());
63    comps_[++i] = createLabel(pHolder_.getLegendSize());
64    comps_[++i] = createCheckBox(pHolder_.isUsePageBackground(), pNames_[i], this);
65    comps_[++i] = createCheckBox(pHolder_.isVisible(), pNames_[i], this);
66    for(i=0; i < comps_.length; i++) {
67      addProperty(i+1, pNames_[i], comps_[i], false);
68    }
69    addProperty(comps_.length + 1, " ", new JLabel(" "), true);
70  }
71
72  void resetFields() {
73    for(int i=0; i < comps_.length; i++) {
74      if(comps_[i] instanceof JTextField) {
75        ((JTextField)comps_[i]).removeActionListener(this);
76        ((JTextField)comps_[i]).removeFocusListener(this);
77      } else if(comps_[i] instanceof JCheckBox) {
78        ((JCheckBox)comps_[i]).removeActionListener(this);
79        ((JCheckBox)comps_[i]).removeFocusListener(this);
80      } else if(comps_[i] instanceof JComboBox) {
81        ((JComboBox)comps_[i]).removeActionListener(this);
82        ((JComboBox)comps_[i]).removeFocusListener(this);
83      } else if(comps_[i] instanceof JButton) {
84        ((JButton)comps_[i]).removeActionListener(this);
85        ((JButton)comps_[i]).removeFocusListener(this);
86      }
87    }
88  }
89
90  void update() {
91    int i = -1;
92    updateColor((JButton)comps_[++i], pHolder_.getBackground());
93    updateBorder((JButton)comps_[++i], pHolder_.getBorder());
94    Rectangle b = pHolder_.getBounds();
95    ((JLabel)comps_[++i]).setText(b.x + ", " + b.y + ", " + b.width + ", " + b.height);
96    ((JLabel)comps_[++i]).setText(Integer.toString(pHolder_.getDataGroupSize()));
97    ((JTextField)comps_[++i]).setText(pHolder_.getId());
98    ((JLabel)comps_[++i]).setText(Integer.toString(pHolder_.getLabelSize()));
99    ((JLabel)comps_[++i]).setText(Integer.toString(pHolder_.getLegendSize()));
100    ((JCheckBox)comps_[++i]).setSelected(pHolder_.isUsePageBackground());
101    ((JCheckBox)comps_[++i]).setSelected(pHolder_.isVisible());
102  }
103
104  private void processEvent(Object obj, String command) {
105    if(command.equals("Border")) {
106      BorderDialog bd = new BorderDialog(null, "Select Border", true);
107      bd.setBorder(pHolder_.getBorder());
108      bd.setVisible(true);
109      pHolder_.setBorder(bd.getBorder());
110    } else if(command.equals("Id")) {
111      String oldId = pHolder_.getId();
112      pHolder_.getPanelModel().getPanelList().remove(oldId);
113      pHolder_.setId(((JTextField)obj).getText());
114      pHolder_.getPanelModel().getPanelList().put(pHolder_.getId(), pHolder_);
115    } else if(command.equals("Visible")) {
116      pHolder_.setVisible(((JCheckBox)obj).isSelected());
117    } else if(command.equals("Background")) {
118      ColorDialog cd = new ColorDialog(getFrame(), "Select Axis Color", true);
119      cd.setColor(pHolder_.getBackground());
120      cd.setVisible(true);
121      Color newcolor = cd.getColor();
122      if(newcolor != null) {
123        pHolder_.setBackground(newcolor);
124        updateColor((JButton)obj, newcolor);
125      }
126    } else if(command.equals("Page Background")) {
127      pHolder_.setUsePageBackground(((JCheckBox)obj).isSelected());
128    }
129  }
130
131  public void actionPerformed(ActionEvent e) {
132    Object obj = e.getSource();
133    String command = e.getActionCommand();
134    processEvent(obj, command);
135  }
136  public void stateChanged(ChangeEvent e) {
137    update();
138  }
139  public void focusGained(FocusEvent e) {
140  }
141  public void focusLost(FocusEvent e) {
142    Object obj = e.getSource();
143    if(obj instanceof JTextField) {
144      JTextField tf = (JTextField)obj;
145      String name = tf.getName();
146      processEvent(obj, name);
147    }
148  }
149
150  private JButton createBorder (Border value,
151                                String action, ActionListener listen) {
152    JButton jb = new JButton(getBorderDescription(value));
153    jb.setActionCommand(action);
154    if(listen != null) jb.addActionListener(listen);
155    return jb;
156  }
157
158  private void updateBorder(JButton comp, Border value) {
159    comp.setText(getBorderDescription(value));
160  }
161
162  private String getBorderDescription(Border border) {
163    String description = "None";
164    if(border != null) {
165      if(border instanceof BevelBorder) {
166        description = "Beveled";
167      } else if(border instanceof EtchedBorder) {
168        description = "Etched";
169      } else if(border instanceof LineBorder) {
170        description = "Line";
171      } else if(border instanceof TitledBorder) {
172        description = "Titled";
173      }
174    }
175    return description;
176  }
177
178  public void setExpert(boolean expert) {
179    expert_ = expert;
180  }
181
182  public boolean isExpert() {
183    return expert_;
184  }
185}
Note: See TracBrowser for help on using the repository browser.