package org.openjump.core.ui.plugin.tools;
import com.vividsolutions.jump.I18N;
import com.vividsolutions.jump.util.Blackboard;
import com.vividsolutions.jump.workbench.WorkbenchContext;
import com.vividsolutions.jump.workbench.model.Layer;
import com.vividsolutions.jump.workbench.model.MeasureLayerFinder;
import com.vividsolutions.jump.workbench.ui.FontChooser;
import com.vividsolutions.jump.workbench.ui.OKCancelDialog;
import com.vividsolutions.jump.workbench.ui.OptionsDialog;
import com.vividsolutions.jump.workbench.ui.OptionsPanel;
import com.vividsolutions.jump.workbench.ui.plugin.PersistentBlackboardPlugIn;
import com.vividsolutions.jump.workbench.ui.renderer.style.BasicStyle;
import de.latlon.deejump.plugin.style.VertexStylesFactory;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JColorChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import org.openjump.core.ui.swing.VertexStylePanel;
/**
* This Panel displays the options for the AdvancedMeasureTool.
* The options are:
* - Summary
* - display area and distance?
* - font and size
* - font color
* - vertex
* - display distance per vertex?
* - font and size
* - font color
* - paint vertex?
* - vertex style for the first vertex and the following vertexes
* - line and fill style
* - paint line?
* - linecolor
* - paint fill?
* - fillcolor
*
*
* @author Matthias Scholz <ms@jammerhund.de>
*/
public class AdvancedMeasureOptionsPanel extends JPanel implements OptionsPanel {
// Blackboard keys
// summary
public static final String BB_SUMMARY_PAINT_LENGTH = AdvancedMeasureOptionsPanel.class.getName() + " - SUMMARY_PAINT_LENGTH";
public static final String BB_SUMMARY_PAINT_AREA = AdvancedMeasureOptionsPanel.class.getName() + " - SUMMARY_PAINT_AREA";
public static final String BB_SUMMARY_FONT = AdvancedMeasureOptionsPanel.class.getName() + " - SUMMARY_FONT";
public static final String BB_SUMMARY_FONT_COLOR = AdvancedMeasureOptionsPanel.class.getName() + " - SUMMARY_FONT_COLOR";
// vertex
public static final String BB_VERTEX_PAINT_DISTANCE = AdvancedMeasureOptionsPanel.class.getName() + " - VERTEX_PAINT_DISTANCE";
public static final String BB_VERTEX_FONT = AdvancedMeasureOptionsPanel.class.getName() + " - VERTEX_FONT";
public static final String BB_VERTEX_FONT_COLOR = AdvancedMeasureOptionsPanel.class.getName() + " - VERTEX_FONT_COLOR";
public static final String BB_VERTEX_PAINT = AdvancedMeasureOptionsPanel.class.getName() + " - VERTEX_PAINT";
public static final String BB_VERTEX_FIRST_COLOR = AdvancedMeasureOptionsPanel.class.getName() + " - VERTEX_FIRST_COLOR";
public static final String BB_VERTEX_FIRST_FORM = AdvancedMeasureOptionsPanel.class.getName() + " - VERTEX_FIRST_FORM";
public static final String BB_VERTEX_FIRST_SIZE = AdvancedMeasureOptionsPanel.class.getName() + " - VERTEX_FIRST_SIZE";
public static final String BB_VERTEX_FOLLOWING_COLOR = AdvancedMeasureOptionsPanel.class.getName() + " - VERTEX_FOLLOWING_COLOR";
public static final String BB_VERTEX_FOLLOWING_FORM = AdvancedMeasureOptionsPanel.class.getName() + " - VERTEX_FOLLOWING_FORM";
public static final String BB_VERTEX_FOLLOWING_SIZE = AdvancedMeasureOptionsPanel.class.getName() + " - VERTEX_FOLLOWING_SIZE";
// line and fill
public static final String BB_LINE_PAINT = AdvancedMeasureOptionsPanel.class.getName() + " - LINE_PAINT";
public static final String BB_LINE_COLOR = AdvancedMeasureOptionsPanel.class.getName() + " - LINE_COLOR";
public static final String BB_FILL_PAINT = AdvancedMeasureOptionsPanel.class.getName() + " - FILL_PAINT";
public static final String BB_FILL_COLOR = AdvancedMeasureOptionsPanel.class.getName() + " - FILL_COLOR";
// Default values
// summary
public static final Font DEFAULT_SUMMARY_FONT = new Font("Dialog", Font.PLAIN, 24);
public static final Color DEFAULT_SUMMARY_COLOR = Color.black;
public static final boolean DEFAULT_SUMMARY_PAINT_LENGTH = true;
public static final boolean DEFAULT_SUMMARY_PAINT_AREA = true;
// vertex
public static final boolean DEFAULT_VERTEX_PAINT_DISTANCE = true;
public static final Font DEFAULT_VERTEX_FONT = new Font("Dialog", Font.PLAIN, 12);
public static final Color DEFAULT_VERTEX_FONT_COLOR = Color.black;
public static final boolean DEFAULT_VERTEX_PAINT = true;
public static final Color DEFAULT_VERTEX_FIRST_COLOR = Color.orange;
public static final String DEFAULT_VERTEX_FIRST_FORM = VertexStylesFactory.SQUARE_STYLE;
public static final int DEFAULT_VERTEX_FIRST_SIZE = 10;
public static final Color DEFAULT_VERTEX_FOLLOWING_COLOR = Color.red;
public static final String DEFAULT_VERTEX_FOLLOWING_FORM = VertexStylesFactory.SQUARE_STYLE;
public static final int DEFAULT_VERTEX_FOLLOWING_SIZE = 5;
// line and fill
public static final boolean DEFAULT_LINE_PAINT = true;
public static final Color DEFAULT_LINE_COLOR = Color.red;
public static final boolean DEFAULT_FILL_PAINT = true;
public static final Color DEFAULT_FILL_COLOR = Color.red;
private WorkbenchContext context = null;
private Blackboard blackboard = null;
private JPanel mainPanel;
// summary widgets
private JButton summaryFontButton;
private JButton summaryFontColorButton;
private JCheckBox paintSummaryLengthCheckBox;
private JCheckBox paintSummaryAreaCheckBox;
// vertex widgets
private JCheckBox paintVertexDistanceCheckBox;
private JButton vertexFontButton;
private JButton vertexFontColorButton;
private JCheckBox paintVertexCheckBox;
private JButton vertexStyleButton;
private JPanel vertexStylePanels;
private VertexStylePanel vertexStylePanelFirst;
private VertexStylePanel vertexStylePanelFollowing;
// line and fill widgets
private JCheckBox paintLineCheckBox;
private JButton lineColorButton;
private JCheckBox paintFillCheckBox;
private JButton fillColorButton;
// the variables for the options
// summary
private Font summaryFont = DEFAULT_SUMMARY_FONT;
private Color summaryFontColor = DEFAULT_SUMMARY_COLOR;
// vertex
private Font vertexFont = DEFAULT_VERTEX_FONT;
private Color vertexFontColor = DEFAULT_VERTEX_FONT_COLOR;
// line and fill
private Color lineColor = DEFAULT_LINE_COLOR;
private Color fillColor = DEFAULT_FILL_COLOR;
public AdvancedMeasureOptionsPanel(WorkbenchContext context) {
this.context = context;
blackboard = PersistentBlackboardPlugIn.get(this.context);
initComponents();
}
private void initComponents() {
GridBagConstraints gridBagConstraints;
this.setLayout(new BorderLayout());
this.setBorder(new EmptyBorder(new Insets(5, 10, 5, 10)));
mainPanel = new JPanel(new GridBagLayout());
this.add(mainPanel, BorderLayout.CENTER);
/* ************************************************
* summary settings
* ************************************************ */
JPanel summaryPanel = new JPanel(new GridBagLayout());
summaryPanel.setBorder(new TitledBorder(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.summary")));
JPanel summaryContentPanel = new JPanel(new GridBagLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
summaryPanel.add(summaryContentPanel, gridBagConstraints);
summaryFontButton = new JButton(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-font"));
summaryFontColorButton = new JButton(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-color"));
// checkbox for paint the summary (distance and area)
// length checkbox
paintSummaryLengthCheckBox = new JCheckBox(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.paint-summary-length"));
paintSummaryAreaCheckBox = new JCheckBox(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.paint-summary-area"));
paintSummaryLengthCheckBox.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
summaryFontButton.setEnabled(paintSummaryLengthCheckBox.isSelected() || paintSummaryAreaCheckBox.isSelected());
summaryFontColorButton.setEnabled(paintSummaryLengthCheckBox.isSelected() || paintSummaryAreaCheckBox.isSelected());
}
});
paintSummaryLengthCheckBox.setSelected(DEFAULT_SUMMARY_PAINT_LENGTH);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
summaryContentPanel.add(paintSummaryLengthCheckBox, gridBagConstraints);
// area checkbox
paintSummaryAreaCheckBox.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
summaryFontButton.setEnabled(paintSummaryLengthCheckBox.isSelected() || paintSummaryAreaCheckBox.isSelected());
summaryFontColorButton.setEnabled(paintSummaryLengthCheckBox.isSelected() || paintSummaryAreaCheckBox.isSelected());
}
});
paintSummaryAreaCheckBox.setSelected(DEFAULT_SUMMARY_PAINT_AREA);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
summaryContentPanel.add(paintSummaryAreaCheckBox, gridBagConstraints);
// font label
JLabel summaryFontLabel = new JLabel(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.font"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 26, 0, 0);
summaryContentPanel.add(summaryFontLabel, gridBagConstraints);
// font button
summaryFontButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Font newFont = FontChooser.showDialog(OptionsDialog.instance(context.getWorkbench()), I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-font"), summaryFont, true);
if (newFont != null) summaryFont = newFont;
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
summaryContentPanel.add(summaryFontButton, gridBagConstraints);
// font color label
JLabel fontColorLabel = new JLabel(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.fontcolor"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 26, 0, 0);
summaryContentPanel.add(fontColorLabel, gridBagConstraints);
// font color button
summaryFontColorButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
summaryFontColor = JColorChooser.showDialog(OptionsDialog.instance(context.getWorkbench()), I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-color"), summaryFontColor);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
summaryContentPanel.add(summaryFontColorButton, gridBagConstraints);
// summaryPanel
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
mainPanel.add(summaryPanel, gridBagConstraints);
/* ************************************************
* Vertex styling
* ************************************************ */
JPanel vertexPanel = new JPanel(new GridBagLayout());
vertexPanel.setBorder(new TitledBorder(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.vertex")));
JPanel vertexContentPanel = new JPanel(new GridBagLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
vertexPanel.add(vertexContentPanel, gridBagConstraints);
vertexFontButton = new JButton(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-font"));
vertexFontColorButton = new JButton(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-color"));
// checkbox for paint the distance per vertex
paintVertexDistanceCheckBox = new JCheckBox(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.paint-vertex-distance"));
paintVertexDistanceCheckBox.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
vertexFontButton.setEnabled(paintVertexDistanceCheckBox.isSelected());
vertexFontColorButton.setEnabled(paintVertexDistanceCheckBox.isSelected());
}
});
paintVertexDistanceCheckBox.setSelected(DEFAULT_VERTEX_PAINT_DISTANCE);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
vertexContentPanel.add(paintVertexDistanceCheckBox, gridBagConstraints);
// font label
JLabel vertexFontLabel = new JLabel(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.font"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 26, 0, 0);
vertexContentPanel.add(vertexFontLabel, gridBagConstraints);
// font button
vertexFontButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Font newFont = FontChooser.showDialog(OptionsDialog.instance(context.getWorkbench()), I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-font"), vertexFont, true);
if (newFont != null) vertexFont = newFont;
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
vertexContentPanel.add(vertexFontButton, gridBagConstraints);
// font color label
JLabel vertexFontColorLabel = new JLabel(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.fontcolor"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 26, 0, 0);
vertexContentPanel.add(vertexFontColorLabel, gridBagConstraints);
// font color button
vertexFontColorButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
vertexFontColor = JColorChooser.showDialog(OptionsDialog.instance(context.getWorkbench()), I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-color"), vertexFontColor);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
vertexContentPanel.add(vertexFontColorButton, gridBagConstraints);
// vertex style
vertexStyleButton = new JButton(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.change-style"));
// checkbox for paint vertex or not
paintVertexCheckBox = new JCheckBox(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.paint-vertex"));
paintVertexCheckBox.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
vertexStyleButton.setEnabled(paintVertexCheckBox.isSelected());
}
});
paintVertexCheckBox.setSelected(DEFAULT_VERTEX_PAINT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
vertexContentPanel.add(paintVertexCheckBox, gridBagConstraints);
// vertex style label
JLabel vertexStyleLabel = new JLabel(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.vertexstyle"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 26, 0, 0);
vertexContentPanel.add(vertexStyleLabel, gridBagConstraints);
// dialog with the vertex style settings
vertexStylePanels = new JPanel(new FlowLayout());
vertexStylePanelFirst = new VertexStylePanel(false);
vertexStylePanelFirst.setBorder(new TitledBorder(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.first-vertex")));
vertexStylePanelFollowing = new VertexStylePanel(false);
vertexStylePanelFollowing.setBorder(new TitledBorder(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.following-vertexes")));
vertexStylePanels.add(vertexStylePanelFirst);
vertexStylePanels.add(vertexStylePanelFollowing);
// vertex style button
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
vertexStyleButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// save the current value to restore it, if cancel button was pressed
Color firstVertexColor = vertexStylePanelFirst.getVertexColor();
String firstVertexForm = vertexStylePanelFirst.getVertexForm();
int firstVertexSize = vertexStylePanelFirst.getVertexSize();
Color followingVertexColor = vertexStylePanelFollowing.getVertexColor();
String followingVertexForm = vertexStylePanelFollowing.getVertexForm();
int followingVertexSize = vertexStylePanelFollowing.getVertexSize();
// create the dialog
OKCancelDialog vertexStyleDialog = new OKCancelDialog(context.getWorkbench().getFrame(),
I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.change-style"),
true, vertexStylePanels, new OKCancelDialog.Validator() {
public String validateInput(Component component) {
return null;
}
});
vertexStyleDialog.setVisible(true);
// if the use have the cancel button pressed, then restore the old values
if (!vertexStyleDialog.wasOKPressed()) {
vertexStylePanelFirst.setVertexColor(firstVertexColor);
vertexStylePanelFirst.setVertexForm(firstVertexForm);
vertexStylePanelFirst.setVertexSize(firstVertexSize);
vertexStylePanelFollowing.setVertexColor(followingVertexColor);
vertexStylePanelFollowing.setVertexForm(followingVertexForm);
vertexStylePanelFollowing.setVertexSize(followingVertexSize);
}
}
});
vertexContentPanel.add(vertexStyleButton, gridBagConstraints);
// vertexPanel
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
mainPanel.add(vertexPanel, gridBagConstraints);
/* ************************************************
* line and fill settings
* ************************************************ */
JPanel lineFillPanel = new JPanel(new GridBagLayout());
lineFillPanel.setBorder(new TitledBorder(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.line-and-fill")));
JPanel lineFillContentPanel = new JPanel(new GridBagLayout());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
lineFillPanel.add(lineFillContentPanel, gridBagConstraints);
lineColorButton = new JButton(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-color"));
fillColorButton = new JButton(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-color"));
// checkbox for paint lines or not
paintLineCheckBox = new JCheckBox(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.paint-line"));
paintLineCheckBox.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
lineColorButton.setEnabled(paintLineCheckBox.isSelected());
}
});
paintLineCheckBox.setSelected(DEFAULT_LINE_PAINT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
lineFillContentPanel.add(paintLineCheckBox, gridBagConstraints);
// line color label
JLabel lineColorLabel = new JLabel(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.linecolor"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 26, 0, 0);
lineFillContentPanel.add(lineColorLabel, gridBagConstraints);
// line color button
lineColorButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
lineColor = JColorChooser.showDialog(OptionsDialog.instance(context.getWorkbench()), I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-color"), lineColor);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
lineFillContentPanel.add(lineColorButton, gridBagConstraints);
// checkbox for fill or not
paintFillCheckBox = new JCheckBox(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.filling"));
paintFillCheckBox.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
fillColorButton.setEnabled(paintFillCheckBox.isSelected());
}
});
paintFillCheckBox.setSelected(DEFAULT_FILL_PAINT);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
lineFillContentPanel.add(paintFillCheckBox, gridBagConstraints);
// font color label
JLabel fillColorLabel = new JLabel(I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.fillcolor"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(0, 26, 0, 0);
lineFillContentPanel.add(fillColorLabel, gridBagConstraints);
// fill color button
fillColorButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fillColor = JColorChooser.showDialog(OptionsDialog.instance(context.getWorkbench()), I18N.get("org.openjump.core.ui.plugin.tools.AdvancedMeasureOptionsPanel.choose-color"), fillColor);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 10);
lineFillContentPanel.add(fillColorButton, gridBagConstraints);
// lineFillPanel
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
mainPanel.add(lineFillPanel, gridBagConstraints);
/* ************************************************
* empty fill Panel for nice layout
* ************************************************ */
JPanel fillPanel = new JPanel();
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
mainPanel.add(fillPanel, gridBagConstraints);
}
public String validateInput() {
return null;
}
public void okPressed() {
// first store into the Blackboard
// summary
blackboard.put(BB_SUMMARY_FONT_COLOR, summaryFontColor);
blackboard.put(BB_SUMMARY_FONT, summaryFont);
blackboard.put(BB_SUMMARY_PAINT_LENGTH, paintSummaryLengthCheckBox.isSelected());
blackboard.put(BB_SUMMARY_PAINT_AREA, paintSummaryAreaCheckBox.isSelected());
// vertex
blackboard.put(BB_VERTEX_FONT, vertexFont);
blackboard.put(BB_VERTEX_FONT_COLOR, vertexFontColor);
blackboard.put(BB_VERTEX_PAINT_DISTANCE, paintVertexDistanceCheckBox.isSelected());
blackboard.put(BB_VERTEX_PAINT, paintVertexCheckBox.isSelected());
blackboard.put(BB_VERTEX_FIRST_COLOR, vertexStylePanelFirst.getVertexColor());
blackboard.put(BB_VERTEX_FIRST_FORM, vertexStylePanelFirst.getVertexForm());
blackboard.put(BB_VERTEX_FIRST_SIZE, vertexStylePanelFirst.getVertexSize());
blackboard.put(BB_VERTEX_FOLLOWING_COLOR, vertexStylePanelFollowing.getVertexColor());
blackboard.put(BB_VERTEX_FOLLOWING_FORM, vertexStylePanelFollowing.getVertexForm());
blackboard.put(BB_VERTEX_FOLLOWING_SIZE, vertexStylePanelFollowing.getVertexSize());
// line and fill
blackboard.put(BB_LINE_PAINT, paintLineCheckBox.isSelected());
blackboard.put(BB_LINE_COLOR, lineColor);
blackboard.put(BB_FILL_PAINT, paintFillCheckBox.isSelected());
blackboard.put(BB_FILL_COLOR, fillColor);
// second change the Layer's Style
Layer layer = (new MeasureLayerFinder(context, context)).getLayer();
// if the MeasureLayer is available, then appy the changes
if (layer != null) {
MeasurementStyle style = (MeasurementStyle) layer.getStyle(MeasurementStyle.class);
// summary
style.setSummaryFont(summaryFont);
style.setSummaryColor(summaryFontColor);
style.setPaintSummaryLength(paintSummaryLengthCheckBox.isSelected());
style.setPaintSummaryArea(paintSummaryAreaCheckBox.isSelected());
// vertex labeling
style.setVertexFont(vertexFont);
style.setVertexFontColor(vertexFontColor);
style.setVertexPaintDistance(paintVertexDistanceCheckBox.isSelected());
// vertex painting
style.setVertexPaint(paintVertexCheckBox.isSelected());
style.setVertexFirstColor(vertexStylePanelFirst.getVertexColor());
style.setVertexFirstForm(vertexStylePanelFirst.getVertexForm());
style.setVertexFirstSize(vertexStylePanelFirst.getVertexSize());
style.setVertexFollowingColor(vertexStylePanelFollowing.getVertexColor());
style.setVertexFollowingForm(vertexStylePanelFollowing.getVertexForm());
style.setVertexFollowingSize(vertexStylePanelFollowing.getVertexSize());
// line and fill
BasicStyle basicStyle = layer.getBasicStyle();
basicStyle.setRenderingLine(paintLineCheckBox.isSelected());
basicStyle.setLineColor(lineColor);
basicStyle.setRenderingFill(paintFillCheckBox.isSelected());
basicStyle.setFillColor(fillColor);
context.getLayerViewPanel().repaint();
}
}
public void init() {
Object font;
Object color;
Object string;
// summary settings
paintSummaryLengthCheckBox.setSelected(blackboard.get(BB_SUMMARY_PAINT_LENGTH, DEFAULT_SUMMARY_PAINT_LENGTH));
paintSummaryAreaCheckBox.setSelected(blackboard.get(BB_SUMMARY_PAINT_AREA, DEFAULT_SUMMARY_PAINT_AREA));
font = blackboard.get(BB_SUMMARY_FONT, DEFAULT_SUMMARY_FONT);
if (font instanceof Font) summaryFont = (Font) font;
color = blackboard.get(BB_SUMMARY_FONT_COLOR, DEFAULT_SUMMARY_COLOR);
if (color instanceof Color) summaryFontColor = (Color) color;
// vertex settings
paintVertexDistanceCheckBox.setSelected(blackboard.get(BB_VERTEX_PAINT_DISTANCE, DEFAULT_VERTEX_PAINT_DISTANCE));
font = blackboard.get(BB_VERTEX_FONT, DEFAULT_VERTEX_FONT);
if (font instanceof Font) vertexFont = (Font) font;
color = blackboard.get(BB_VERTEX_FONT_COLOR, DEFAULT_VERTEX_FONT_COLOR);
if (color instanceof Color) vertexFontColor = (Color) color;
paintVertexCheckBox.setSelected(blackboard.get(BB_VERTEX_PAINT, DEFAULT_VERTEX_PAINT));
color = blackboard.get(BB_VERTEX_FIRST_COLOR, DEFAULT_VERTEX_FIRST_COLOR);
if (color instanceof Color) vertexStylePanelFirst.setVertexColor((Color) color);
string = blackboard.get(BB_VERTEX_FIRST_FORM, DEFAULT_VERTEX_FIRST_FORM);
if (string instanceof String) vertexStylePanelFirst.setVertexForm((String) string);
vertexStylePanelFirst.setVertexSize(blackboard.get(BB_VERTEX_FIRST_SIZE, DEFAULT_VERTEX_FIRST_SIZE));
color = blackboard.get(BB_VERTEX_FOLLOWING_COLOR, DEFAULT_VERTEX_FOLLOWING_COLOR);
if (color instanceof Color) vertexStylePanelFollowing.setVertexColor((Color) color);
string = blackboard.get(BB_VERTEX_FOLLOWING_FORM, DEFAULT_VERTEX_FOLLOWING_FORM);
if (string instanceof String) vertexStylePanelFollowing.setVertexForm((String) string);
vertexStylePanelFollowing.setVertexSize(blackboard.get(BB_VERTEX_FOLLOWING_SIZE, DEFAULT_VERTEX_FOLLOWING_SIZE));
// line and fill
paintLineCheckBox.setSelected(blackboard.get(BB_LINE_PAINT, DEFAULT_LINE_PAINT));
color = blackboard.get(BB_LINE_COLOR, DEFAULT_LINE_COLOR);
if (color instanceof Color) lineColor = (Color) color;
paintFillCheckBox.setSelected(blackboard.get(BB_FILL_PAINT, DEFAULT_FILL_PAINT));
color = blackboard.get(BB_FILL_COLOR, DEFAULT_FILL_COLOR);
if (color instanceof Color) fillColor = (Color) color;
}
}