/*
* VectorSymbolPanel.java
*
* Created on July 6, 2006, 8:36 AM
*/
package ika.gui;
import ika.geo.VectorSymbol;
/**
*
* @author Bernhard Jenny, Institute of Cartography, ETH Zurich.
*/
public class VectorSymbolPanel extends javax.swing.JPanel {
private VectorSymbol vs;
private boolean updating = false;
/** Creates new form VectorSymbolPanel */
public VectorSymbolPanel() {
initComponents();
}
public void setVectorSymbol(VectorSymbol vs) {
this.vs = vs;
this.write();
}
public VectorSymbol getVectorSymbol() {
return this.vs;
}
public void write() {
if (this.vs == null) {
// stroke
this.strokeWidthNumberField.setEnabled(false);
this.strokeCheckBox.setEnabled(false);
this.strokeColorButton.setEnabled(false);
// fill
this.fillCheckBox.setEnabled(false);
this.fillColorButton.setEnabled(false);
return;
}
// stroke
this.strokeWidthNumberField.setEnabled(true);
this.strokeCheckBox.setEnabled(true);
this.strokeColorButton.setEnabled(true);
// fill
this.fillCheckBox.setEnabled(true);
this.fillColorButton.setEnabled(true);
try {
updating = true;
// stroke
this.strokeWidthNumberField.setDoubleValue(vs.getStrokeWidth());
this.strokeCheckBox.setSelected(vs.isStroked());
this.strokeColorButton.setColor(vs.getStrokeColor());
// fill
this.fillCheckBox.setSelected(vs.isFilled());
java.awt.Color fillColor = vs.getFillColor();
this.fillColorButton.setColor(fillColor);
final int alpha = 255 - fillColor.getAlpha();
this.colorTransparencySlider.setValue(alpha);
this.colorTransparencyNumberField.setDoubleValue(alpha);
} finally {
updating = false;
}
}
public void read() {
if (updating)
return;
if (this.vs == null)
return;
VectorSymbol old_vs = (VectorSymbol)this.vs.clone();
// stroke
vs.setStrokeWidth((float)this.strokeWidthNumberField.getDoubleValue());
vs.setStroked(this.strokeCheckBox.isSelected());
vs.setStrokeColor(this.strokeColorButton.getColor());
// fill
vs.setFilled(this.fillCheckBox.isSelected());
java.awt.Color fillColor = this.fillColorButton.getColor();
final int alpha = 255 - colorTransparencySlider.getValue();
fillColor = new java.awt.Color(fillColor.getRed(), fillColor.getGreen(),
fillColor.getBlue(), alpha);
vs.setFillColor(fillColor);
this.firePropertyChange("vectorsymbol", old_vs, this.vs);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
strokeLabel = new javax.swing.JLabel();
strokeCheckBox = new javax.swing.JCheckBox();
strokeColorButton = new ika.gui.ColorButton();
strokeWidthNumberField = new ika.gui.NumberField();
fillLabel = new javax.swing.JLabel();
fillCheckBox = new javax.swing.JCheckBox();
fillColorButton = new ika.gui.ColorButton();
colorTransparencySlider = new javax.swing.JSlider();
colorTransparencyNumberField = new ika.gui.NumberField();
jLabel7 = new javax.swing.JLabel();
setPreferredSize(new java.awt.Dimension(150, 176));
setLayout(new java.awt.GridBagLayout());
strokeLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
strokeLabel.setText("Stroke:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
add(strokeLabel, gridBagConstraints);
strokeCheckBox.setSelected(true);
strokeCheckBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
strokeCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
strokeCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
strokeCheckBoxgeometryActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 0);
add(strokeCheckBox, gridBagConstraints);
strokeColorButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
strokeColorButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(strokeColorButton, gridBagConstraints);
strokeWidthNumberField.setMin(0.0);
strokeWidthNumberField.setPreferredSize(new java.awt.Dimension(60, 28));
strokeWidthNumberField.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
strokeWidthNumberFieldpropertyChange(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(strokeWidthNumberField, gridBagConstraints);
fillLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
fillLabel.setText("Fill:");
fillLabel.setVerticalAlignment(javax.swing.SwingConstants.TOP);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
add(fillLabel, gridBagConstraints);
fillCheckBox.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
fillCheckBox.setMargin(new java.awt.Insets(0, 0, 0, 0));
fillCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
fillCheckBoxgeometryActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 0);
add(fillCheckBox, gridBagConstraints);
fillColorButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
fillColorButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(fillColorButton, gridBagConstraints);
colorTransparencySlider.setMajorTickSpacing(85);
colorTransparencySlider.setMaximum(255);
colorTransparencySlider.setMinorTickSpacing(17);
colorTransparencySlider.setPaintLabels(true);
colorTransparencySlider.setPaintTicks(true);
colorTransparencySlider.setValue(0);
colorTransparencySlider.setPreferredSize(new java.awt.Dimension(90, 52));
colorTransparencySlider.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
colorTransparencySlidercolorSliderStateChanged(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 5;
gridBagConstraints.gridwidth = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.ipadx = 88;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(colorTransparencySlider, gridBagConstraints);
colorTransparencyNumberField.setMax(255.0);
colorTransparencyNumberField.setMin(0.0);
colorTransparencyNumberField.setPattern("#.#");
colorTransparencyNumberField.setPreferredSize(new java.awt.Dimension(50, 28));
colorTransparencyNumberField.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
colorTransparencyNumberFieldPropertyChange(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
add(colorTransparencyNumberField, gridBagConstraints);
jLabel7.setText("Transparency:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(10, 0, 0, 0);
add(jLabel7, gridBagConstraints);
}// </editor-fold>//GEN-END:initComponents
private void colorTransparencyNumberFieldPropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_colorTransparencyNumberFieldPropertyChange
if (evt.getSource() instanceof NumberField
&& !"value".equals(evt.getPropertyName()))
return;
if (this.updating)
return;
try {
this.updating = true;
final int alpha = (int)this.colorTransparencyNumberField.getDoubleValue();
this.colorTransparencySlider.setValue(alpha);
} finally {
this.updating = false;
}
this.read();
}//GEN-LAST:event_colorTransparencyNumberFieldPropertyChange
private void colorTransparencySlidercolorSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_colorTransparencySlidercolorSliderStateChanged
if (this.updating)
return;
try {
this.updating = true;
final int alpha = this.colorTransparencySlider.getValue();
this.colorTransparencyNumberField.setDoubleValue(alpha);
} finally {
this.updating = false;
}
this.read();
}//GEN-LAST:event_colorTransparencySlidercolorSliderStateChanged
private void fillColorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fillColorButtonActionPerformed
this.fillCheckBox.setSelected(true);
this.read();
}//GEN-LAST:event_fillColorButtonActionPerformed
private void fillCheckBoxgeometryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fillCheckBoxgeometryActionPerformed
this.read();
}//GEN-LAST:event_fillCheckBoxgeometryActionPerformed
private void strokeWidthNumberFieldpropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_strokeWidthNumberFieldpropertyChange
if (evt.getSource() instanceof NumberField
&& !"value".equals(evt.getPropertyName()))
return;
this.read();
}//GEN-LAST:event_strokeWidthNumberFieldpropertyChange
private void strokeColorButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_strokeColorButtonActionPerformed
this.strokeCheckBox.setSelected(true);
this.read();
}//GEN-LAST:event_strokeColorButtonActionPerformed
private void strokeCheckBoxgeometryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_strokeCheckBoxgeometryActionPerformed
this.read();
}//GEN-LAST:event_strokeCheckBoxgeometryActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private ika.gui.NumberField colorTransparencyNumberField;
private javax.swing.JSlider colorTransparencySlider;
private javax.swing.JCheckBox fillCheckBox;
private ika.gui.ColorButton fillColorButton;
private javax.swing.JLabel fillLabel;
private javax.swing.JLabel jLabel7;
private javax.swing.JCheckBox strokeCheckBox;
private ika.gui.ColorButton strokeColorButton;
private javax.swing.JLabel strokeLabel;
private ika.gui.NumberField strokeWidthNumberField;
// End of variables declaration//GEN-END:variables
}