/*
* $Id: ContourLineAttributeDialog.java,v 1.11 2003/08/22 23:02:39 dwd Exp $
*
* This software is provided by NOAA for full, free and open release. It is
* understood by the recipient/user that NOAA assumes no liability for any
* errors contained in the code. Although this software is released without
* conditions or restrictions in its use, it is expected that appropriate
* credit be given to its author and to the National Oceanic and Atmospheric
* Administration should the software be included by the recipient as an
* element in other product development.
*/
package sgtplot.swing.prop;
import javax.swing.*;
import java.awt.*;
import java.util.StringTokenizer;
import javax.swing.border.*;
import sgtplot.ContourLineAttribute;
import sgtplot.LineAttribute;
import sgtplot.pmel.swing.ThreeDotsButton;
import java.awt.event.*;
/**
* Edits a ContourLineAttribute. This dialog does not
* make a copy of the attribute so changes "Applied" will cause
* sgtplot to redraw the plot using the new properties unless
* {@link sgtplot.JPane#setBatch(boolean) batching}
* has been turned on.
*
* Example of ContourLineAttributeDialog use:
*
* public void editCLAttribute(ContourLineAttribute cla) {
* ContourLineAttributeDialog clad = new ContourLineAttributeDialog();
* clad.showDialog(cla);
* }
*
*
* @author Donald Denbo
* @version $Revision: 1.11 $, $Date: 2003/08/22 23:02:39 $
* @since 2.0
*/
public class ContourLineAttributeDialog extends JDialog {
private ContourLineAttribute attr_;
private Font labelFont_;
private int result_;
private String[] styleNames_ = {"plain", "bold", "italic", "bold-italic"};
/** OK button was selected */
public static int OK_RESPONSE = 1;
/** Cancel button was selected */
public static int CANCEL_RESPONSE = 2;
/**
* Constructor.
*/
public ContourLineAttributeDialog(Frame parent) {
super(parent);
try {
jbInit();
pack();
} catch(Exception ex) {
ex.printStackTrace();
}
}
void jbInit() throws Exception {
{
String[] tempString = new String[7];
tempString[0] = "SOLID";
tempString[1] = "DASHED";
tempString[2] = "HEAVY";
tempString[3] = "HIGHLIGHT";
tempString[4] = "MARK";
tempString[5] = "MARK & SOLID";
tempString[6] = "STROKE";
for(int i=0; i < tempString.length; i++) {
lineStyleCBM.addElement(tempString[i]);
}
}
{
String[] tempString = new String[3];
tempString[0] = "BUTT";
tempString[1] = "ROUND";
tempString[2] = "SQUARE";
for(int i=0; i < tempString.length; i++) {
capStyleCBM.addElement(tempString[i]);
}
}
{
String[] tempString = new String[3];
tempString[0] = "MITER";
tempString[1] = "ROUND";
tempString[2] = "BEVEL";
for(int i=0; i < tempString.length; i++) {
miterStyleCBM.addElement(tempString[i]);
}
}
titledBorder1 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(142, 142, 142)),"Stroke Line Attributes");
getContentPane().setLayout(new BorderLayout(0,0));
setSize(new Dimension(587, 410));
setVisible(false);
strokePanel.setBorder(titledBorder1);
strokePanel.setLayout(gridBagLayout1);
dashArrayUseDefault.setActionCommand("dashArray");
JLabel110.setText(" Width:");
dashPhaseTextField.setColumns(10);
JLabel27.setText("Dash Phase:");
JLabel28.setText("Dash Array:");
widthTextField.setColumns(10);
arrayEditor.setActionCommand("...");
arrayEditor.setToolTipText("Edit dash array.");
dashArrayPanel.setLayout(new GridBagLayout());
dashPhaseUseDefault.setActionCommand("dashPhase");
widthUseDefault.setActionCommand("width");
jLabel1.setText("Cap Style:");
jLabel2.setText("Miter Style:");
jLabel3.setText("Miter Limit:");
miterLimitTextField.setColumns(10);
capStyleComboBox.setModel(capStyleCBM);
miterStyleComboBox.setModel(miterStyleCBM);
lineStyleComboBox.addActionListener(new ContourLineAttributeDialog_lineStyleComboBox_actionAdapter(this));
capStyleUseDefault.setActionCommand("capStyle");
miterStyleUseDefault.setActionCommand("miterStyle");
miterLimitUseDefault.setActionCommand("miterLimit");
getContentPane().add(TabbedPane, "Center");
linePanel.setLayout(new GridBagLayout());
TabbedPane.add(linePanel, "linePanel");
labelPanel.setLayout(new GridBagLayout());
TabbedPane.add(labelPanel, "labelPanel");
labelPanel.setBounds(2,27,476,260);
labelPanel.setVisible(false);
JLabel23.setText("Property");
labelPanel.add(JLabel23, new GridBagConstraints(0,0,1,1,0.0,0.0,
GridBagConstraints.SOUTH,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0));
JLabel23.setForeground(java.awt.Color.darkGray);
JPanel3.setLayout(new GridBagLayout());
labelPanel.add(JPanel3, new GridBagConstraints(1,0,1,1,0.0,0.0,
GridBagConstraints.SOUTH,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0));
JLabel24.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JLabel24.setText("Use");
JPanel3.add(JLabel24, new GridBagConstraints(0,0,1,1,1.0,1.0,
GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(5,0,0,0),0,0));
JLabel24.setForeground(java.awt.Color.darkGray);
JLabel25.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JLabel25.setText("Default");
JPanel3.add(JLabel25, new GridBagConstraints(0,1,1,1,1.0,1.0,
GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
JLabel25.setForeground(java.awt.Color.darkGray);
JLabel26.setText("Value");
labelPanel.add(JLabel26, new GridBagConstraints(2,0,1,1,0.0,0.0,
GridBagConstraints.SOUTH,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0));
JLabel26.setForeground(java.awt.Color.darkGray);
JPanel4.setBorder(etchedBorder1);
JPanel4.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
labelPanel.add(JPanel4, new GridBagConstraints(0,1,3,1,0.0,0.0,
GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(2,5,7,5),0,-12));
JLabel11.setText("Color:");
labelPanel.add(JLabel11, new GridBagConstraints(0,2,1,1,0.0,0.0,
GridBagConstraints.EAST,GridBagConstraints.NONE,new Insets(0,5,0,5),0,0));
labelColorUseDefault.setActionCommand("labelColor");
labelPanel.add(labelColorUseDefault, new GridBagConstraints(1,2,1,1,0.0,0.0,
GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0));
textColorPanel.setBorder(etchedBorder1);
textColorPanel.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
labelPanel.add(textColorPanel, new GridBagConstraints(2,2,1,1,0.0,0.0,
GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(0,5,0,5),0,0));
JLabel15.setText("Font:");
labelPanel.add(JLabel15, new GridBagConstraints(0,3,1,1,0.0,0.0,
GridBagConstraints.EAST,GridBagConstraints.NONE,new Insets(0,5,0,5),0,0));
labelFontUseDefault.setActionCommand("labelFont");
labelPanel.add(labelFontUseDefault, new GridBagConstraints(1,3,1,1,0.0,0.0,
GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0));
fontPanel.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
labelPanel.add(fontPanel, new GridBagConstraints(2,3,1,1,0.0,0.0,
GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(0,5,0,5),0,0));
fontLabel.setText("Dialog, 12, Bold");
fontPanel.add(fontLabel);
fontLabel.setForeground(java.awt.Color.black);
fontEditor.setToolTipText("Edit font.");
fontEditor.setActionCommand("...");
fontPanel.add(fontEditor);
JLabel16.setText("HeightP:");
labelPanel.add(JLabel16, new GridBagConstraints(0,4,1,1,0.0,0.0,
GridBagConstraints.EAST,GridBagConstraints.NONE,new Insets(0,5,0,5),0,0));
heightPUseDefault.setActionCommand("heightP");
labelPanel.add(heightPUseDefault, new GridBagConstraints(1,4,1,1,0.0,0.0,
GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0));
heightTextField.setColumns(10);
labelPanel.add(heightTextField, new GridBagConstraints(2,4,1,1,1.0,0.0,
GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(0,5,5,5),0,0));
JLabel6.setText("Text:");
labelPanel.add(JLabel6, new GridBagConstraints(0,6,1,1,0.0,0.0,
GridBagConstraints.EAST,GridBagConstraints.NONE,new Insets(0,5,0,5),0,0));
labelPanel.add(textTextField, new GridBagConstraints(2,6,1,1,0.0,0.0,
GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(0,5,2,5),0,0));
JLabel22.setText("Format:");
labelPanel.add(JLabel22, new GridBagConstraints(0,7,1,1,0.0,0.0,
GridBagConstraints.EAST,GridBagConstraints.NONE,new Insets(0,5,0,5),0,0));
labelFormatUseDefault.setActionCommand("labelFormat");
labelPanel.add(labelFormatUseDefault, new GridBagConstraints(1,7,1,1,0.0,0.0,
GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0));
labelFormatTextField.setColumns(10);
labelPanel.add(labelFormatTextField, new GridBagConstraints(2,7,1,1,0.0,0.0,
GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(0,5,5,5),0,0));
JLabel17.setText("Auto Label:");
labelPanel.add(JLabel17, new GridBagConstraints(0,5,1,1,0.0,0.0,
GridBagConstraints.EAST,GridBagConstraints.NONE,new Insets(0,5,0,5),0,0));
labelPanel.add(autoLabelCheckBox, new GridBagConstraints(2,5,1,1,0.0,0.0,
GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(0,5,0,5),0,0));
JLabel7.setText("Enabled:");
labelPanel.add(JLabel7, new GridBagConstraints(0,8,1,1,0.0,0.0,
GridBagConstraints.EAST,GridBagConstraints.NONE,new Insets(5,5,0,5),0,0));
labelEnabledUseDefault.setActionCommand("labelEnabled");
labelPanel.add(labelEnabledUseDefault, new GridBagConstraints(1,8,1,1,0.0,0.0,
GridBagConstraints.CENTER,GridBagConstraints.NONE,new Insets(0,0,0,0),0,0));
labelEnabledCheckBox.setSelected(true);
labelPanel.add(labelEnabledCheckBox, new GridBagConstraints(2,8,1,1,0.0,0.0,
GridBagConstraints.WEST,GridBagConstraints.NONE,new Insets(5,5,5,5),0,0));
TabbedPane.setSelectedComponent(linePanel);
TabbedPane.setSelectedIndex(0);
buttonPanel.setBorder(etchedBorder1);
buttonPanel.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
getContentPane().add(buttonPanel, "South");
okButton.setText("OK");
okButton.setActionCommand("OK");
buttonPanel.add(okButton);
applyButton.setText("Apply");
applyButton.setActionCommand("Apply");
buttonPanel.add(applyButton);
cancelButton.setText("Cancel");
cancelButton.setActionCommand("Cancel");
buttonPanel.add(cancelButton);
//$$ etchedBorder1.move(0,384);
linePanel.setBounds(2,27,476,260);
linePanel.setVisible(false);
JLabel1.setText("Color:");
linePanel.add(JLabel1, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));
colorUseDefault.setActionCommand("color");
linePanel.add(colorUseDefault, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 15, 0, 10), 0, 0));
lineColorPanel.setBorder(etchedBorder1);
lineColorPanel.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
linePanel.add(lineColorPanel, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));
JLabel5.setText("Line Style:");
linePanel.add(JLabel5, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 28, 0, 5), 0, 0));
styleUseDefault.setActionCommand("style");
linePanel.add(styleUseDefault, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 15, 0, 10), 0, 0));
lineStyleComboBox.setModel(lineStyleCBM);
linePanel.add(lineStyleComboBox, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));
JLabel18.setText("Property");
linePanel.add(JLabel18, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.SOUTH, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
JLabel18.setForeground(java.awt.Color.darkGray);
JPanel1.setLayout(new GridBagLayout());
linePanel.add(JPanel1, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.SOUTH, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
JLabel19.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JLabel19.setText("Use");
JPanel1.add(JLabel19, new GridBagConstraints(0,0,1,1,1.0,1.0,
GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(5,0,0,0),0,0));
JLabel19.setForeground(java.awt.Color.darkGray);
JLabel20.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
JLabel20.setText("Default");
JPanel1.add(JLabel20, new GridBagConstraints(0,1,1,1,1.0,1.0,
GridBagConstraints.CENTER,GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));
JLabel20.setForeground(java.awt.Color.darkGray);
JLabel21.setText("Value");
linePanel.add(JLabel21, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.SOUTH, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
JLabel21.setForeground(java.awt.Color.darkGray);
JPanel2.setBorder(etchedBorder1);
JPanel2.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
linePanel.add(JPanel2, new GridBagConstraints(0, 1, 3, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 7, 0), 0, -12));
linePanel.add(strokePanel, new GridBagConstraints(0, 5, 3, 1, 1.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 0, 5), 0, 0));
strokePanel.add(dashArrayUseDefault, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 15, 0, 10), 0, 0));
strokePanel.add(JLabel110, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));
strokePanel.add(dashPhaseTextField, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));
strokePanel.add(JLabel27, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));
strokePanel.add(JLabel28, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));
strokePanel.add(widthTextField, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));
strokePanel.add(dashArrayPanel, new GridBagConstraints(2, 1, 1, 1, 1.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 5, 5, 5), 0, 0));
dashArrayPanel.add(dashArrayTextField, new GridBagConstraints(0,0,1,1,1.0,0.0,
GridBagConstraints.CENTER,GridBagConstraints.HORIZONTAL,new Insets(0,0,0,0),0,0));
dashArrayPanel.add(arrayEditor, new GridBagConstraints(1,0,1,1,0.0,1.0,
GridBagConstraints.CENTER,GridBagConstraints.VERTICAL,new Insets(0,0,0,0),0,0));
strokePanel.add(dashPhaseUseDefault, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 15, 0, 10), 0, 0));
strokePanel.add(widthUseDefault, new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 15, 0, 10), 0, 0));
strokePanel.add(jLabel1, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));
strokePanel.add(jLabel2, new GridBagConstraints(0, 4, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));
strokePanel.add(jLabel3, new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0
,GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(0, 5, 0, 5), 0, 0));
strokePanel.add(capStyleUseDefault, new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 15, 0, 10), 0, 0));
strokePanel.add(miterStyleUseDefault, new GridBagConstraints(1, 4, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 15, 0, 10), 0, 0));
strokePanel.add(miterLimitUseDefault, new GridBagConstraints(1, 5, 1, 1, 0.0, 0.0
,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 15, 0, 10), 0, 0));
strokePanel.add(capStyleComboBox, new GridBagConstraints(2, 3, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));
strokePanel.add(miterStyleComboBox, new GridBagConstraints(2, 4, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));
strokePanel.add(miterLimitTextField, new GridBagConstraints(2, 5, 1, 1, 0.0, 0.0
,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 5, 5, 5), 0, 0));
TabbedPane.setTitleAt(0,"Line");
TabbedPane.setTitleAt(1,"Label");
//$$ stringComboBoxModel1.move(24,384);
lineStyleComboBox.setSelectedIndex(0);
setTitle("ContourLineAttribute Properties");
SymWindow aSymWindow = new SymWindow();
this.addWindowListener(aSymWindow);
SymAction lSymAction = new SymAction();
cancelButton.addActionListener(lSymAction);
okButton.addActionListener(lSymAction);
applyButton.addActionListener(lSymAction);
fontEditor.addActionListener(lSymAction);
autoLabelCheckBox.addActionListener(lSymAction);
labelEnabledCheckBox.addActionListener(lSymAction);
arrayEditor.addActionListener(lSymAction);
//
// Use Default checkbox's have their own action listener
//
CBAction cbAction = new CBAction();
colorUseDefault.addActionListener(cbAction);
styleUseDefault.addActionListener(cbAction);
labelColorUseDefault.addActionListener(cbAction);
labelFontUseDefault.addActionListener(cbAction);
heightPUseDefault.addActionListener(cbAction);
labelFormatUseDefault.addActionListener(cbAction);
labelEnabledUseDefault.addActionListener(cbAction);
dashArrayUseDefault.addActionListener(cbAction);
dashPhaseUseDefault.addActionListener(cbAction);
widthUseDefault.addActionListener(cbAction);
capStyleUseDefault.addActionListener(cbAction);
miterStyleUseDefault.addActionListener(cbAction);
miterLimitUseDefault.addActionListener(cbAction);
// Insets pup = new Insets(0, 0, 0, 0);
// fontEditor.setMargin(pup);
// arrayEditor.setMargin(pup);
}
/** Used internally. */
public void addNotify() {
// Record the size of the window prior to calling parents addNotify.
Dimension d = getSize();
super.addNotify();
if (fComponentsAdjusted)
return;
// Adjust components according to the insets
Insets ins = getInsets();
setSize(ins.left + ins.right + d.width, ins.top + ins.bottom + d.height);
Component components[] = getContentPane().getComponents();
for (int i = 0; i < components.length; i++) {
Point p = components[i].getLocation();
p.translate(ins.left, ins.top);
components[i].setLocation(p);
}
fComponentsAdjusted = true;
}
// Used for addNotify check.
boolean fComponentsAdjusted = false;
/**
* Constructor.
*/
public ContourLineAttributeDialog(String title) {
this();
setTitle(title);
}
/**
* Default constructor.
*/
public ContourLineAttributeDialog() {
this((Frame)null);
}
/**
* Make the dialog visible.
*/
public void setVisible(boolean b) {
if(b) {
setLocation(50, 50);
}
super.setVisible(b);
}
class SymWindow extends java.awt.event.WindowAdapter {
public void windowClosing(java.awt.event.WindowEvent event) {
Object object = event.getSource();
if (object == ContourLineAttributeDialog.this)
ContourLineAttributeDialog_WindowClosing(event);
}
}
void ContourLineAttributeDialog_WindowClosing(java.awt.event.WindowEvent event) {
dispose();
}
javax.swing.JTabbedPane TabbedPane = new javax.swing.JTabbedPane();
javax.swing.JPanel linePanel = new javax.swing.JPanel();
javax.swing.JLabel JLabel1 = new javax.swing.JLabel();
javax.swing.JCheckBox colorUseDefault = new javax.swing.JCheckBox();
ColorEntryPanel lineColorPanel = new ColorEntryPanel();
javax.swing.JLabel JLabel5 = new javax.swing.JLabel();
javax.swing.JCheckBox styleUseDefault = new javax.swing.JCheckBox();
javax.swing.JComboBox lineStyleComboBox = new javax.swing.JComboBox();
javax.swing.JLabel JLabel18 = new javax.swing.JLabel();
javax.swing.JPanel JPanel1 = new javax.swing.JPanel();
javax.swing.JLabel JLabel19 = new javax.swing.JLabel();
javax.swing.JLabel JLabel20 = new javax.swing.JLabel();
javax.swing.JLabel JLabel21 = new javax.swing.JLabel();
javax.swing.JPanel JPanel2 = new javax.swing.JPanel();
javax.swing.JPanel labelPanel = new javax.swing.JPanel();
javax.swing.JLabel JLabel23 = new javax.swing.JLabel();
javax.swing.JPanel JPanel3 = new javax.swing.JPanel();
javax.swing.JLabel JLabel24 = new javax.swing.JLabel();
javax.swing.JLabel JLabel25 = new javax.swing.JLabel();
javax.swing.JLabel JLabel26 = new javax.swing.JLabel();
javax.swing.JPanel JPanel4 = new javax.swing.JPanel();
javax.swing.JLabel JLabel11 = new javax.swing.JLabel();
javax.swing.JCheckBox labelColorUseDefault = new javax.swing.JCheckBox();
ColorEntryPanel textColorPanel = new ColorEntryPanel();
javax.swing.JLabel JLabel15 = new javax.swing.JLabel();
javax.swing.JCheckBox labelFontUseDefault = new javax.swing.JCheckBox();
javax.swing.JPanel fontPanel = new javax.swing.JPanel();
javax.swing.JLabel fontLabel = new javax.swing.JLabel();
ThreeDotsButton fontEditor = new ThreeDotsButton();
javax.swing.JLabel JLabel16 = new javax.swing.JLabel();
javax.swing.JCheckBox heightPUseDefault = new javax.swing.JCheckBox();
javax.swing.JTextField heightTextField = new javax.swing.JTextField();
javax.swing.JLabel JLabel6 = new javax.swing.JLabel();
javax.swing.JTextField textTextField = new javax.swing.JTextField();
javax.swing.JLabel JLabel22 = new javax.swing.JLabel();
javax.swing.JCheckBox labelFormatUseDefault = new javax.swing.JCheckBox();
javax.swing.JTextField labelFormatTextField = new javax.swing.JTextField();
javax.swing.JLabel JLabel17 = new javax.swing.JLabel();
javax.swing.JCheckBox autoLabelCheckBox = new javax.swing.JCheckBox();
javax.swing.JLabel JLabel7 = new javax.swing.JLabel();
javax.swing.JCheckBox labelEnabledUseDefault = new javax.swing.JCheckBox();
javax.swing.JCheckBox labelEnabledCheckBox = new javax.swing.JCheckBox();
javax.swing.JPanel buttonPanel = new javax.swing.JPanel();
javax.swing.JButton okButton = new javax.swing.JButton();
javax.swing.JButton applyButton = new javax.swing.JButton();
javax.swing.JButton cancelButton = new javax.swing.JButton();
javax.swing.border.EtchedBorder etchedBorder1 = new javax.swing.border.EtchedBorder();
DefaultComboBoxModel lineStyleCBM = new DefaultComboBoxModel();
DefaultComboBoxModel capStyleCBM = new DefaultComboBoxModel();
DefaultComboBoxModel miterStyleCBM = new DefaultComboBoxModel();
JPanel strokePanel = new JPanel();
TitledBorder titledBorder1;
GridBagLayout gridBagLayout1 = new GridBagLayout();
JCheckBox dashArrayUseDefault = new javax.swing.JCheckBox();
JLabel JLabel110 = new javax.swing.JLabel();
JTextField dashPhaseTextField = new javax.swing.JTextField();
JLabel JLabel27 = new javax.swing.JLabel();
JLabel JLabel28 = new javax.swing.JLabel();
JTextField dashArrayTextField = new javax.swing.JTextField();
JTextField widthTextField = new javax.swing.JTextField();
ThreeDotsButton arrayEditor = new ThreeDotsButton();
JPanel dashArrayPanel = new javax.swing.JPanel();
JCheckBox dashPhaseUseDefault = new javax.swing.JCheckBox();
JCheckBox widthUseDefault = new javax.swing.JCheckBox();
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
JCheckBox capStyleUseDefault = new JCheckBox();
JCheckBox miterStyleUseDefault = new JCheckBox();
JCheckBox miterLimitUseDefault = new JCheckBox();
JComboBox capStyleComboBox = new JComboBox();
JComboBox miterStyleComboBox = new JComboBox();
JTextField miterLimitTextField = new JTextField();
class SymAction implements java.awt.event.ActionListener {
public void actionPerformed(java.awt.event.ActionEvent event) {
Object object = event.getSource();
if (object == cancelButton)
cancelButton_actionPerformed(event);
else if (object == okButton)
okButton_actionPerformed(event);
else if (object == applyButton)
applyButton_actionPerformed(event);
else if (object == fontEditor)
fontEditor_actionPerformed(event);
else if (object == autoLabelCheckBox)
autoLabelCheckBox_actionPerformed(event);
else if (object == labelEnabledCheckBox)
labelEnabledCheckBox_actionPerformed(event);
else if (object == arrayEditor)
arrayEditor_actionPerformed(event);
}
}
void cancelButton_actionPerformed(java.awt.event.ActionEvent event) {
this.setVisible(false);
result_ = CANCEL_RESPONSE;
}
void okButton_actionPerformed(java.awt.event.ActionEvent event) {
result_ = OK_RESPONSE;
updateContourLineAttribute();
this.setVisible(false);
}
void applyButton_actionPerformed(java.awt.event.ActionEvent event) {
result_ = OK_RESPONSE;
updateContourLineAttribute();
}
class CBAction implements java.awt.event.ActionListener {
public void actionPerformed(java.awt.event.ActionEvent event) {
Object object = event.getSource();
if(object instanceof JCheckBox)
checkBox_actionPerformed(event);
}
}
void checkBox_actionPerformed(java.awt.event.ActionEvent event) {
String action = event.getActionCommand();
useDefault(action);
}
private void useDefault(String action) {
boolean enable;
boolean stroke = lineStyleComboBox.getSelectedIndex() == LineAttribute.STROKE;
if(action.equals("color")) {
enable = !colorUseDefault.isSelected();
lineColorPanel.setEnabled(enable);
} else if(action.equals("style")) {
lineStyleComboBox.setEnabled(!styleUseDefault.isSelected());
} else if(action.equals("width")) {
widthTextField.setEnabled(!widthUseDefault.isSelected() && stroke);
} else if(action.equals("dashArray")) {
enable = !dashArrayUseDefault.isSelected() && stroke;
dashArrayTextField.setEnabled(enable);
arrayEditor.setEnabled(enable);
} else if(action.equals("dashPhase")) {
dashPhaseTextField.setEnabled(!dashPhaseUseDefault.isSelected() && stroke);
} else if(action.equals("capStyle")) {
capStyleComboBox.setEnabled(!capStyleUseDefault.isSelected() && stroke);
} else if(action.equals("miterStyle")) {
miterStyleComboBox.setEnabled(!miterStyleUseDefault.isSelected() && stroke);
} else if(action.equals("miterLimit")) {
miterLimitTextField.setEnabled(!miterLimitUseDefault.isSelected() && stroke);
} else if(action.equals("labelColor")) {
enable = !labelColorUseDefault.isSelected();
textColorPanel.setEnabled(enable);
} else if(action.equals("labelFont")) {
enable = !labelFontUseDefault.isSelected();
fontLabel.setEnabled(enable);
fontEditor.setEnabled(enable);
} else if(action.equals("heightP")) {
heightTextField.setEnabled(!heightPUseDefault.isSelected());
} else if(action.equals("labelFormat")) {
labelFormatTextField.setEnabled(!labelFormatUseDefault.isSelected());
} else if(action.equals("labelEnabled")) {
labelEnabledCheckBox.setEnabled(!labelEnabledUseDefault.isSelected());
} else {
System.out.println("Action " + action + " not found.");
}
}
private void useDefaultAll() {
useDefault("color");
useDefault("style");
useDefault("width");
useDefault("dashArray");
useDefault("dashPhase");
useDefault("capStyle");
useDefault("miterStyle");
useDefault("miterLimit");
useDefault("labelColor");
useDefault("labelFont");
useDefault("heightP");
useDefault("labelFormat");
useDefault("labelEnabled");
}
/**
* Show the dialog and wait for a response
*
* @return result, either CANCE_RESPONSE or OK_RESPONSE
*/
public int showDialog(ContourLineAttribute attr) {
setContourLineAttribute(attr);
result_ = CANCEL_RESPONSE;
setModal(true);
super.setVisible(true);
return result_;
}
/**
* Set the ContourLineAttribute for editing.
*/
public void setContourLineAttribute(ContourLineAttribute attr) {
attr_ = attr;
//
// Line attributes
//
// Color
//
lineColorPanel.setColor(attr_.getColor());
colorUseDefault.setSelected(!attr_.isColorOverridden());
//
// style
//
lineStyleComboBox.setSelectedIndex(attr_.getStyle());
styleUseDefault.setSelected(!attr_.isStyleOverridden());
strokePanelEnabled(attr_.getStyle() == LineAttribute.STROKE);
//
// width
//
widthTextField.setText(Float.toString(attr_.getWidth()));
widthUseDefault.setSelected(!attr_.isWidthOverridden());
//
// dash Array
//
float[] da = attr_.getDashArray();
dashArrayTextField.setText(dashArrayString(da));
dashArrayUseDefault.setSelected(!attr_.isDashArrayOverridden());
//
// dash phase
//
dashPhaseTextField.setText(Float.toString(attr_.getDashPhase()));
dashPhaseUseDefault.setSelected(!attr_.isDashPhaseOverridden());
//
// cap style
//
capStyleComboBox.setSelectedIndex(attr_.getCapStyle());
capStyleUseDefault.setSelected(!attr_.isCapStyleOverridden());
//
// miter style
//
miterStyleComboBox.setSelectedIndex(attr_.getMiterStyle());
miterStyleUseDefault.setSelected(!attr_.isMiterStyleOverridden());
//
// miter limit
//
miterLimitTextField.setText(Float.toString(attr_.getMiterLimit()));
miterLimitUseDefault.setSelected(!attr_.isMiterLimitOverridden());
//
// Label attributes
//
// color
//
textColorPanel.setColor(attr_.getLabelColor());
labelColorUseDefault.setSelected(!attr_.isLabelColorOverridden());
//
// font
//
labelFont_ = attr_.getLabelFont();
if(labelFont_ == null) {
fontLabel.setText("Default Font");
} else {
fontLabel.setText(fontString(labelFont_));
fontLabel.setFont(labelFont_);
}
labelFontUseDefault.setSelected(!attr_.isLabelFontOverridden());
//
// heightP
//
heightTextField.setText(Double.toString(attr_.getLabelHeightP()));
heightPUseDefault.setSelected(!attr_.isLabelHeightPOverridden());
//
// autoLabel
//
autoLabelCheckBox.setSelected(attr_.isAutoLabel());
autoLabel();
//
// text
//
textTextField.setText(attr_.getLabelText());
//
// label format
labelFormatTextField.setText(attr_.getLabelFormat());
labelFormatUseDefault.setSelected(!attr_.isLabelFormatOverridden());
//
// enabled
//
labelEnabledCheckBox.setSelected(attr_.isLabelEnabled());
labelEnabledUseDefault.setSelected(!attr_.isLabelEnabledOverridden());
labelEnabled();
//
useDefaultAll();
}
private void autoLabel() {
textTextField.setEnabled(!autoLabelCheckBox.isSelected());
}
private void labelEnabled() {
boolean enabled = labelEnabledCheckBox.isSelected();
textTextField.setEnabled(enabled);
textColorPanel.setEnabled(enabled);
fontLabel.setEnabled(enabled);
labelFontUseDefault.setEnabled(enabled);
fontEditor.setEnabled(enabled);
heightTextField.setEnabled(enabled);
heightPUseDefault.setEnabled(enabled);
autoLabelCheckBox.setEnabled(enabled);
labelFormatTextField.setEnabled(enabled);
labelFormatUseDefault.setEnabled(enabled);
//
useDefaultAll();
}
private String dashArrayString(float[] da) {
if(da == null) {
return "null";
}
StringBuffer sbuf = new StringBuffer("{");
for(int i=0; i < da.length; i++) {
sbuf.append(Float.toString(da[i]) + ", ");
}
sbuf.setLength(sbuf.length()-2);
sbuf.append("}");
return sbuf.toString();
}
private float[] dashArray() {
String arrayString = dashArrayTextField.getText();
int start = arrayString.indexOf("{");
int stop = arrayString.indexOf("}");
String sub = arrayString.substring(start+1,stop);
//
// parse array
//
StringTokenizer token = new StringTokenizer(sub, ",");
int index = 0;
float[] array = new float[token.countTokens()];
while(token.hasMoreTokens()) {
array[index] = new Float(token.nextToken()).floatValue();
index++;
}
return array;
}
void updateContourLineAttribute() {
//
// Line attributes
//
// Color
//
attr_.setColor(lineColorPanel.getColor());
attr_.setColorOverridden(!colorUseDefault.isSelected());
//
// style
//
attr_.setStyle(lineStyleComboBox.getSelectedIndex());
attr_.setStyleOverridden(!styleUseDefault.isSelected());
//
// width
//
attr_.setWidth(new Float(widthTextField.getText()).floatValue());
attr_.setWidthOverridden(!widthUseDefault.isSelected());
//
// dash array
//
attr_.setDashArray(dashArray());
attr_.setDashArrayOverridden(!dashArrayUseDefault.isSelected());
//
// dash phase
//
attr_.setDashPhase(new Float(dashPhaseTextField.getText()).floatValue());
attr_.setDashPhaseOverridden(!dashPhaseUseDefault.isSelected());
//
// cap style
//
attr_.setCapStyle(capStyleComboBox.getSelectedIndex());
attr_.setCapStyleOverridden(!capStyleUseDefault.isSelected());
//
// miter style
//
attr_.setMiterStyle(miterStyleComboBox.getSelectedIndex());
attr_.setMiterStyleOverridden(!miterStyleUseDefault.isSelected());
//
// miter limit
//
attr_.setMiterLimit(new Float(miterLimitTextField.getText()).floatValue());
attr_.setMiterLimitOverridden(!miterLimitUseDefault.isSelected());
//
// Label attributes
//
// color
//
attr_.setLabelColor(textColorPanel.getColor());
attr_.setLabelColorOverridden(!labelColorUseDefault.isSelected());
//
// font
//
if(labelFont_ != null) attr_.setLabelFont(labelFont_);
attr_.setLabelFontOverridden(!labelFontUseDefault.isSelected());
//
// heightP
//
attr_.setLabelHeightP(new Double(heightTextField.getText()).doubleValue());
attr_.setLabelHeightPOverridden(!heightPUseDefault.isSelected());
//
// autoLabel
//
attr_.setAutoLabel(autoLabelCheckBox.isSelected());
//
// text
//
attr_.setLabelText(textTextField.getText());
//
// label format
//
attr_.setLabelFormat(labelFormatTextField.getText());
attr_.setLabelFormatOverridden(!labelFormatUseDefault.isSelected());
//
// enabled
//
attr_.setLabelEnabled(labelEnabledCheckBox.isSelected());
attr_.setLabelEnabledOverridden(!labelEnabledUseDefault.isSelected());
}
/**
* Get the modified attribute
*/
public ContourLineAttribute getContourLineAttribute() {
return attr_;
}
/**
* Dialog test.
*/
public static void main(String[] args) {
ContourLineAttribute attr = new ContourLineAttribute();
ContourLineAttributeDialog la = new ContourLineAttributeDialog();
la.setContourLineAttribute(attr);
la.setTitle("Test ContourLineAttribute Dialog");
la.setVisible(true);
}
void arrayEditor_actionPerformed(java.awt.event.ActionEvent event) {
ArrayEditDialog aed = new ArrayEditDialog();
Point loc = arrayEditor.getLocationOnScreen();
aed.setLocation(loc.x, loc.y);
aed.setArray(dashArray());
int result = aed.showDialog();
if(result == ArrayEditDialog.OK_RESPONSE) {
dashArrayTextField.setText(dashArrayString(aed.getFloatArray()));
}
}
void fontEditor_actionPerformed(java.awt.event.ActionEvent event) {
FontDialog fd = new FontDialog();
int result = fd.showDialog(labelFont_);
if(result == FontDialog.OK_RESPONSE) {
labelFont_ = fd.getFont();
fontLabel.setText(fontString(labelFont_));
fontLabel.setFont(labelFont_);
}
}
void autoLabelCheckBox_actionPerformed(java.awt.event.ActionEvent event) {
autoLabel();
}
void labelEnabledCheckBox_actionPerformed(java.awt.event.ActionEvent event) {
labelEnabled();
}
String fontString(Font font) {
int style = (font.isBold()?1:0) + (font.isItalic()?2:0);
return font.getName() + " " + styleNames_[style];
}
void lineStyleComboBox_actionPerformed(ActionEvent e) {
int index = lineStyleComboBox.getSelectedIndex();
strokePanelEnabled(index == LineAttribute.STROKE);
if(index == LineAttribute.MARK || index == LineAttribute.MARK_LINE) {
JOptionPane.showMessageDialog(this,
"Line stytle MARK or MARK & SOLID not valid for ContourLine",
"Illegal Line Style", JOptionPane.ERROR_MESSAGE);
lineStyleComboBox.setSelectedIndex(attr_.getStyle());
}
}
public void strokePanelEnabled(boolean enabled) {
widthUseDefault.setEnabled(enabled);
dashArrayUseDefault.setEnabled(enabled);
dashArrayUseDefault.setEnabled(enabled);
dashPhaseUseDefault.setEnabled(enabled);
capStyleUseDefault.setEnabled(enabled);
miterStyleUseDefault.setEnabled(enabled);
miterLimitUseDefault.setEnabled(enabled);
useDefault("width");
useDefault("dashArray");
useDefault("dashPhase");
useDefault("capStyle");
useDefault("miterStyle");
useDefault("miterLimit");
}
}
class ContourLineAttributeDialog_lineStyleComboBox_actionAdapter implements java.awt.event.ActionListener {
ContourLineAttributeDialog adaptee;
ContourLineAttributeDialog_lineStyleComboBox_actionAdapter(ContourLineAttributeDialog adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.lineStyleComboBox_actionPerformed(e);
}
}
Ads help maintain this website.