001: package com.calipso.reportgenerator.userinterface;
002:
003: import javax.swing.*;
004: import java.awt.*;
005: import java.awt.event.ActionListener;
006: import java.awt.event.ActionEvent;
007: import java.awt.event.KeyListener;
008: import java.awt.event.KeyEvent;
009:
010: /**
011: * Presenta un GUI que permite customizar un chart
012: */
013:
014: public class ChartCustomizer extends JDialog implements ActionListener,
015: KeyListener {
016:
017: private JPanel colorPanel;
018: private JPanel checkBoxPanel;
019: private JPanel btsPanel;
020: private JButton btAccept;
021: private JButton btCancel;
022: private JCheckBox checkBoxLegend;
023: private JCheckBox checkBoxToolTips;
024: private JCheckBox checkBoxMultipleAxis;
025: private JButton btColor;
026: private Color color;
027: private boolean legend;
028: private boolean tooltips;
029: private boolean multipleAxis;
030: private Point locationPoint;
031:
032: /**
033: * Crea una instancia de ChartCustomizer
034: * @param owner
035: * @param modal
036: * @throws HeadlessException
037: */
038: public ChartCustomizer(Frame owner, boolean modal)
039: throws HeadlessException {
040: super (owner, modal);
041: setColor(Color.white);
042: initialize();
043: setLegend(checkBoxLegend.isSelected());
044: setTooltips(checkBoxToolTips.isSelected());
045: setMultipleAxis(checkBoxMultipleAxis.isSelected());
046:
047: setLocation(getDefaultLocation());
048: }
049:
050: /**
051: * Obtiene la localizacion del GUI para ubicarlo
052: * correctamente en la pantalla.
053: * @return
054: */
055: private Point getDefaultLocation() {
056: Point ownerLocation = getOwner().getLocation();
057: Dimension ownerSize = getOwner().getSize();
058: Dimension size = getSize();
059:
060: int x = ownerLocation.x + ownerSize.width / 2 - size.width / 2;
061: int y = ownerLocation.y + ownerSize.height / 2 - size.height
062: / 2;
063: return new Point(x, y);
064: }
065:
066: /**
067: * Inicializa el GUI. Crea todos los componentes necesarios.
068: */
069: private void initialize() {
070: colorPanel = new JPanel(new BorderLayout());
071: btColor = new JButton("Color...");
072: btColor.addActionListener(this );
073: btColor.addKeyListener(this );
074: colorPanel.add(btColor);
075:
076: checkBoxPanel = new JPanel(new GridLayout(3, 2));
077: checkBoxLegend = new JCheckBox();
078: checkBoxToolTips = new JCheckBox();
079: checkBoxMultipleAxis = new JCheckBox();
080:
081: checkBoxPanel.add(new JLabel(
082: com.calipso.reportgenerator.common.LanguageTraslator
083: .traslate("235")));
084: checkBoxPanel.add(checkBoxLegend);
085: checkBoxPanel.add(new JLabel(
086: com.calipso.reportgenerator.common.LanguageTraslator
087: .traslate("236")));
088: checkBoxPanel.add(checkBoxToolTips);
089: checkBoxPanel.add(new JLabel(
090: com.calipso.reportgenerator.common.LanguageTraslator
091: .traslate("391")));
092: checkBoxPanel.add(checkBoxMultipleAxis);
093:
094: checkBoxLegend.setSelected(true);
095: checkBoxToolTips.setSelected(true);
096: checkBoxMultipleAxis.setSelected(false);
097:
098: btAccept = new JButton(
099: com.calipso.reportgenerator.common.LanguageTraslator
100: .traslate("112"));
101: btAccept.addActionListener(this );
102: btAccept.addKeyListener(this );
103: btCancel = new JButton(
104: com.calipso.reportgenerator.common.LanguageTraslator
105: .traslate("113"));
106: btCancel.addActionListener(this );
107: btCancel.addKeyListener(this );
108: btsPanel = new JPanel(new FlowLayout());
109: btsPanel.add(btAccept);
110: btsPanel.add(btCancel);
111:
112: this .getContentPane().add(colorPanel, BorderLayout.NORTH);
113: this .getContentPane().add(checkBoxPanel, BorderLayout.CENTER);
114: this .getContentPane().add(btsPanel, BorderLayout.SOUTH);
115:
116: this .pack();
117: }
118:
119: /**
120: * Intercepta los eventos del mouse y setea las propiedades
121: * seleccionadas en el GUI.
122: * @param ae
123: */
124: public void actionPerformed(ActionEvent ae) {
125: if (ae.getSource() == btAccept) {
126: setLegend(checkBoxLegend.isSelected());
127: setTooltips(checkBoxToolTips.isSelected());
128: setMultipleAxis(checkBoxMultipleAxis.isSelected());
129: this .dispose();
130: } else if (ae.getSource() == btColor) {
131: setColor(JColorChooser
132: .showDialog(
133: this ,
134: com.calipso.reportgenerator.common.LanguageTraslator
135: .traslate("237"), Color.white));
136: } else if (ae.getSource() == btCancel) {
137: this .dispose();
138: }
139: }
140:
141: /**
142: * Obtiene el color del background del chart
143: * @return
144: */
145: public Color getColor() {
146: return color;
147: }
148:
149: /**
150: * Asigna el color del background del chart
151: * @param color
152: */
153: public void setColor(Color color) {
154: this .color = color;
155: }
156:
157: /**
158: * Devuelve un booleano que indica si se ha
159: * seleccionado la leyenda.
160: * @return
161: */
162: public boolean isLegend() {
163: return legend;
164: }
165:
166: /**
167: * Asigna un boolean de acuerdo a si se ha
168: * seleccionado la leyenda.
169: * @param legend
170: */
171: public void setLegend(boolean legend) {
172: this .legend = legend;
173: }
174:
175: /**
176: * Devuelve un booleano que indica si se ha
177: * seleccionado toolTips.
178: * @return
179: */
180: public boolean isTooltips() {
181: return tooltips;
182: }
183:
184: /**
185: * Asigna un boolean de acuerdo a si se ha
186: * seleccionado toolTips.
187: * @param tooltips
188: */
189: public void setTooltips(boolean tooltips) {
190: this .tooltips = tooltips;
191: }
192:
193: public void setMultipleAxis(boolean checkBoxMultipleAxis) {
194: this .multipleAxis = checkBoxMultipleAxis;
195: }
196:
197: /**
198: * Intercepta eventos del teclado.
199: * @param e
200: */
201: public void keyTyped(KeyEvent e) {
202: }
203:
204: /**
205: * Intercepta los eventos del teclado y setea
206: * propiedades de acuerdo a lo seleccionado.
207: * @param e
208: */
209: public void keyPressed(KeyEvent e) {
210: if (e.getSource() == btAccept) {
211: setLegend(checkBoxLegend.isSelected());
212: setTooltips(checkBoxToolTips.isSelected());
213: setMultipleAxis(checkBoxMultipleAxis.isSelected());
214: this .dispose();
215: } else if (e.getSource() == btCancel) {
216: this .dispose();
217: } else if (e.getSource() == btColor) {
218: setColor(JColorChooser
219: .showDialog(
220: this ,
221: com.calipso.reportgenerator.common.LanguageTraslator
222: .traslate("237"), Color.white));
223: }
224: }
225:
226: /**
227: * Intercepta eventos del teclado.
228: * @param e
229: */
230: public void keyReleased(KeyEvent e) {
231: }
232:
233: public boolean isMultipleAxis() {
234: return multipleAxis;
235: }
236: }
|