package edu.byu.cs.roots.opg.chart.preset.templates; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.JSpinner.NumberEditor; import javax.swing.SpinnerNumberModel; import edu.byu.cs.roots.opg.gui.tools.FloatEditor; import edu.byu.cs.roots.opg.gui.tools.FloatSpinnerModel; public class PresetChartOptionsStyleEditPanel extends JPanel { private static final long serialVersionUID = -6585933161593824182L; private JLabel styleGen; private JLabel widthLabel; private JLabel heightLabel; private JLabel fontSizeLabel; private JLabel nameFontSizeLabel; private JLabel relativeOffsetLabel; private JLabel rootBackOffsetLabel; private JLabel borderWidthLabel; private JLabel cornerCurveLabel; private JLabel intrudeWidthLabel; private JLabel textPositionsLabel; private JLabel textMarginLabel; private JLabel boxLayoutLabel; private JLabel weddingLayoutLabel; private JLabel endLineArrowLabel; private JLabel endLineArrowHeightLabel; private JLabel endLineArrowFontLabel; private JLabel endLineArrowHeadLabel; private JLabel endLineArrowHeadHeightLabel; private JLabel textDirectionLabel; private JLabel weddingLocationLabel; private JLabel paddingAmountLabel; private JSpinner widthSpinner; private JSpinner heightSpinner; private JSpinner fontSizeSpinner; private JSpinner nameFontSizeSpinner; private JSpinner relativeOffsetSpinner; private JSpinner rootBackOffsetSpinner; private JSpinner borderWidthSpinner; private JSpinner cornerCurveSpinner; private JSpinner intrudeWidthSpinner; private JSpinner textPositionsSpinner; private JSpinner textMarginSpinner; private JSpinner endLineArrowSpinner; private JSpinner endLineArrowHeightSpinner; private JSpinner endLineArrowFontSpinner; private JSpinner endLineArrowHeadSpinner; private JSpinner endLineArrowHeadHeightSpinner; private JSpinner paddingAmountSpinner; private JCheckBox intrusionCheckBox; private JComboBox textPositionsComboBox; private JComboBox boxLayoutComboBox; private JComboBox weddingLayoutComboBox; private JComboBox textDirectionComboBox; private JComboBox weddingLocationComboBox; private JButton textPositionsButton; private JPanel textPositionPanel; private JPanel intrusionPanel; public PresetChartOptionsPanel parent; private StylingBox selectedStyle; private boolean isAncestor; private int selectedGen; private boolean maskEvents = false; public PresetChartOptionsStyleEditPanel(PresetChartOptionsPanel parent){ this.parent = parent; initialize(); } private void initialize(){ this.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); textPositionPanel = new JPanel(new GridBagLayout()); intrusionPanel = new JPanel(new GridBagLayout()); styleGen = new JLabel("Selected: None"); widthLabel = new JLabel("Box Width: "); heightLabel = new JLabel("Box Height: "); fontSizeLabel = new JLabel("Normal Font Size: "); nameFontSizeLabel = new JLabel("Name Font Size: "); relativeOffsetLabel = new JLabel("Relative Offset: "); rootBackOffsetLabel = new JLabel("Root Back Offset: "); borderWidthLabel = new JLabel("Border Width: "); cornerCurveLabel = new JLabel("Rounded Corner Amount: "); intrudeWidthLabel = new JLabel("Intrusion Width: "); textPositionsLabel = new JLabel("Text Positions"); textMarginLabel = new JLabel("Text Margins"); boxLayoutLabel = new JLabel("Text Layout"); weddingLayoutLabel = new JLabel("Wedding Layout"); endLineArrowLabel = new JLabel("End Line Arrow Width"); endLineArrowHeightLabel = new JLabel("End Line Arrow Shaft Height"); endLineArrowFontLabel = new JLabel("End Line Arrow Font Size"); endLineArrowHeadLabel = new JLabel("Arrow Head Length"); endLineArrowHeadHeightLabel = new JLabel("Arrow Head Height"); textDirectionLabel = new JLabel("Text Direction"); weddingLocationLabel = new JLabel("Wedding Pos"); paddingAmountLabel = new JLabel("Padding"); widthSpinner = getWidthSpinner(); heightSpinner = getHeightSpinner(); fontSizeSpinner = getFontSizeSpinner(); nameFontSizeSpinner = getNameFontSizeSpinner(); relativeOffsetSpinner = getRelativeOffsetSpinner(); rootBackOffsetSpinner = getRootBackOffsetSpinner(); borderWidthSpinner = getBorderWidthSpinner(); cornerCurveSpinner = getCornerCurveSpinner(); intrudeWidthSpinner = getIntrudeWidthSpinner(); intrusionCheckBox = getIntrusionCheckBox(); textPositionsComboBox = getTextPositionsComboBox(); textPositionsSpinner = getTextPositionsSpinner(); textPositionsButton = getTextPositionsButton(); textMarginSpinner = getTextMarginSpinner(); boxLayoutComboBox = getBoxLayoutComboBox(); weddingLayoutComboBox = getWeddingLayoutComboBox(); endLineArrowSpinner = getEndLineArrowSpinner(); endLineArrowHeightSpinner = getEndLineArrowHeightSpinner(); endLineArrowFontSpinner = getEndLineArrowFontSpinner(); endLineArrowHeadSpinner = getEndLineArrowHeadSpinner(); endLineArrowHeadHeightSpinner = getEndLineArrowHeadHeightSpinner(); textDirectionComboBox = getTextDirectionComboBox(); weddingLocationComboBox = getWeddingLocationComboBox(); paddingAmountSpinner = getPaddingAmountSpinner(); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 0; c.gridwidth = 2; //c.fill = GridBagConstraints.HORIZONTAL; add(styleGen, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 1; add(widthLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 1; add(widthSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 2; add(heightLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 2; add(heightSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 3; add(fontSizeLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 3; add(fontSizeSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 4; add(nameFontSizeLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 4; add(nameFontSizeSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 5; add(relativeOffsetLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 5; add(relativeOffsetSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 6; add(rootBackOffsetLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 6; add(rootBackOffsetSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 7; add(borderWidthLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 7; add(borderWidthSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 8; add(cornerCurveLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 8; add(cornerCurveSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 0; intrusionPanel.add(intrudeWidthLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 0; intrusionPanel.add(intrusionCheckBox, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 9; intrusionPanel.add(intrudeWidthSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 9; c.gridwidth = 2; add(intrusionPanel, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 10; c.gridwidth = 2; add(textPositionsLabel, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 0; textPositionPanel.add(textPositionsComboBox, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 0; textPositionPanel.add(textPositionsButton, c); c = new GridBagConstraints(); c.gridx = 2; c.gridy = 0; c.gridwidth = 2; textPositionPanel.add(textPositionsSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 11; c.gridwidth = 2; add(textPositionPanel, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 12; c.gridwidth = 1; add(textMarginLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 12; c.gridwidth = 1; add(textMarginSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 13; add(boxLayoutLabel, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 14; c.gridwidth = 2; add(boxLayoutComboBox, c); c = new GridBagConstraints(); c.gridx = 0; c.gridwidth = 2; c.gridy = 15; add(weddingLayoutLabel, c); c = new GridBagConstraints(); c.gridx = 0; c.gridwidth = 2; c.gridy = 16; add(weddingLayoutComboBox, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 17; add(endLineArrowLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 17; add(endLineArrowSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 18; add(endLineArrowFontLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 18; add(endLineArrowFontSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 19; add(endLineArrowHeadLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 19; add(endLineArrowHeadSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 20; add(textDirectionLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 20; add(textDirectionComboBox, c); c = new GridBagConstraints(); c.gridx = 0; c.gridwidth = 2; c.gridy = 21; add(weddingLocationLabel, c); c = new GridBagConstraints(); c.gridx = 0; c.gridwidth = 2; c.gridy = 22; add(weddingLocationComboBox, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 23; add(endLineArrowHeightLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 23; add(endLineArrowHeightSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 24; add(endLineArrowHeadHeightLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 24; add(endLineArrowHeadHeightSpinner, c); c = new GridBagConstraints(); c.gridx = 0; c.gridy = 25; add(paddingAmountLabel, c); c = new GridBagConstraints(); c.gridx = 1; c.gridy = 25; add(paddingAmountSpinner, c); //refreshBoxes(); } private void refreshBoxes(){ maskEvents = true; if (selectedStyle == null) { styleGen.setText("Selected: None"); widthSpinner.getModel().setValue(0.0); widthSpinner.setEnabled(false); heightSpinner.getModel().setValue(0.0); heightSpinner.setEnabled(false); fontSizeSpinner.getModel().setValue(0.0); fontSizeSpinner.setEnabled(false); nameFontSizeSpinner.getModel().setValue(0.0); nameFontSizeSpinner.setEnabled(false); relativeOffsetSpinner.getModel().setValue(0.0); relativeOffsetSpinner.setEnabled(false); rootBackOffsetSpinner.getModel().setValue(0.0); rootBackOffsetSpinner.setEnabled(false); borderWidthSpinner.getModel().setValue(0.0); borderWidthSpinner.setEnabled(false); cornerCurveSpinner.getModel().setValue(0); cornerCurveSpinner.setEnabled(false); intrudeWidthSpinner.getModel().setValue(0.0); intrudeWidthSpinner.setEnabled(false); intrusionCheckBox.setSelected(false); intrusionCheckBox.setEnabled(false); paddingAmountSpinner.getModel().setValue(0.0); paddingAmountSpinner.setEnabled(false); textPositionsComboBox.setEnabled(false); textPositionsComboBox.setSelectedItem(null); textPositionsSpinner.setEnabled(false); textPositionsSpinner.setValue(0.0); textPositionsButton.setEnabled(false); textMarginSpinner.setEnabled(false); textMarginSpinner.setValue(0.0); boxLayoutComboBox.setEnabled(false); boxLayoutComboBox.setSelectedIndex(-1); weddingLayoutComboBox.setEnabled(false); weddingLayoutComboBox.setSelectedIndex(-1); weddingLocationComboBox.setEnabled(false); weddingLocationComboBox.setSelectedIndex(-1); endLineArrowSpinner.getModel().setValue(0.0); endLineArrowSpinner.setEnabled(false); endLineArrowHeightSpinner.getModel().setValue(0.0); endLineArrowHeightSpinner.setEnabled(false); endLineArrowFontSpinner.getModel().setValue(0.0); endLineArrowFontSpinner.setEnabled(false); endLineArrowHeadSpinner.getModel().setValue(0.0); endLineArrowHeadSpinner.setEnabled(false); endLineArrowHeadHeightSpinner.getModel().setValue(0.0); endLineArrowHeadHeightSpinner.setEnabled(false); textDirectionComboBox.setEnabled(false); textDirectionComboBox.setSelectedIndex(-1); } else { if (isAncestor) styleGen.setText("Selected Ancestor Gen: " + selectedGen); else styleGen.setText("Selected Descendant Gen: " + selectedGen); if (!widthSpinner.isEnabled()){ widthSpinner.setEnabled(true); heightSpinner.setEnabled(true); fontSizeSpinner.setEnabled(true); nameFontSizeSpinner.setEnabled(true); relativeOffsetSpinner.setEnabled(true); rootBackOffsetSpinner.setEnabled(true); borderWidthSpinner.setEnabled(true); cornerCurveSpinner.setEnabled(true); textPositionsButton.setEnabled(true); textPositionsSpinner.setEnabled(true); textPositionsComboBox.setEnabled(true); textMarginSpinner.setEnabled(true); boxLayoutComboBox.setEnabled(true); weddingLayoutComboBox.setEnabled(true); endLineArrowSpinner.setEnabled(true); endLineArrowHeightSpinner.setEnabled(true); endLineArrowFontSpinner.setEnabled(true); endLineArrowHeadSpinner.setEnabled(true); endLineArrowHeadHeightSpinner.setEnabled(true); textDirectionComboBox.setEnabled(true); weddingLocationComboBox.setEnabled(true); paddingAmountSpinner.setEnabled(true); intrudeWidthSpinner.setEnabled(true); intrusionCheckBox.setEnabled(true); } widthSpinner.getModel().setValue(selectedStyle.getBoxWidth()); heightSpinner.getModel().setValue(selectedStyle.boxHeight); fontSizeSpinner.getModel().setValue(selectedStyle.fontSize); nameFontSizeSpinner.getModel().setValue(selectedStyle.fontNameSize); relativeOffsetSpinner.getModel().setValue(selectedStyle.getRelativeOffset()); rootBackOffsetSpinner.getModel().setValue(selectedStyle.rootBackOffset); borderWidthSpinner.getModel().setValue(selectedStyle.borderlineWidth); cornerCurveSpinner.getModel().setValue(selectedStyle.cornerCurve); intrudeWidthSpinner.getModel().setValue(selectedStyle.intrudeWidth); intrusionCheckBox.setSelected(selectedStyle.isIntruding); endLineArrowSpinner.getModel().setValue(selectedStyle.endLineArrowShaftLength); endLineArrowHeightSpinner.getModel().setValue(selectedStyle.endLineArrowShaftHeight); endLineArrowFontSpinner.getModel().setValue(selectedStyle.endLineArrowFontSize); endLineArrowHeadSpinner.getModel().setValue(selectedStyle.endLineArrowHeadLength); endLineArrowHeadHeightSpinner.getModel().setValue(selectedStyle.endLineArrowHeadHeight); paddingAmountSpinner.getModel().setValue(selectedStyle.paddingAmount); textPositionsComboBox.removeAllItems(); for (int i = 0; i < selectedStyle.textPositions.size(); i++){ textPositionsComboBox.addItem(new String("Line " + (i+1))); } textPositionsComboBox.setSelectedIndex(0); textPositionsSpinner.getModel().setValue(selectedStyle.textPositions.get(textPositionsComboBox.getSelectedIndex())); textMarginSpinner.getModel().setValue(selectedStyle.textMargin); boxLayoutComboBox.setSelectedItem(selectedStyle.layout); weddingLayoutComboBox.setSelectedItem(selectedStyle.weddingLayout); textDirectionComboBox.setSelectedItem(selectedStyle.direction); weddingLocationComboBox.setSelectedItem(selectedStyle.weddingDisplayType); } maskEvents = false; } public void setStyle(int gen, boolean isAncestor, StylingBoxScheme boxStyles){ if (boxStyles != null){ selectedStyle = isAncestor?boxStyles.getAncesStyle(gen):boxStyles.getDescStyle(gen); this.isAncestor = isAncestor; selectedGen = gen; } else selectedStyle = null; refreshBoxes(); } JSpinner getWidthSpinner() { if (widthSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); widthSpinner = new JSpinner(); widthSpinner.setModel(spinnerModel); widthSpinner.setEditor(new FloatEditor(widthSpinner)); widthSpinner.setEnabled(true); widthSpinner.setToolTipText("The width of the box"); widthSpinner.setPreferredSize(new Dimension(60, 20)); widthSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.setPermWidth(new Double((Float) spinnerModel.getValue())); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return widthSpinner; } JSpinner getHeightSpinner() { if (heightSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); heightSpinner = new JSpinner(); heightSpinner.setModel(spinnerModel); heightSpinner.setEditor(new FloatEditor(heightSpinner)); heightSpinner.setEnabled(true); heightSpinner.setToolTipText("The height of the box"); heightSpinner.setPreferredSize(new Dimension(60, 20)); heightSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.boxHeight = new Double((Float) spinnerModel.getValue()); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return heightSpinner; } JSpinner getFontSizeSpinner() { if (fontSizeSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); fontSizeSpinner = new JSpinner(); fontSizeSpinner.setModel(spinnerModel); fontSizeSpinner.setEditor(new FloatEditor(fontSizeSpinner)); fontSizeSpinner.setEnabled(true); fontSizeSpinner.setToolTipText("The size of the normal font"); fontSizeSpinner.setPreferredSize(new Dimension(60, 20)); fontSizeSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.fontSize = new Double((Float) spinnerModel.getValue()); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return fontSizeSpinner; } JSpinner getNameFontSizeSpinner() { if (nameFontSizeSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); nameFontSizeSpinner = new JSpinner(); nameFontSizeSpinner.setModel(spinnerModel); nameFontSizeSpinner.setEditor(new FloatEditor(nameFontSizeSpinner)); nameFontSizeSpinner.setEnabled(true); nameFontSizeSpinner.setToolTipText("The size of the name font"); nameFontSizeSpinner.setPreferredSize(new Dimension(60, 20)); nameFontSizeSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.fontNameSize = new Double((Float) spinnerModel.getValue()); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return nameFontSizeSpinner; } JSpinner getRelativeOffsetSpinner() { if (relativeOffsetSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); relativeOffsetSpinner = new JSpinner(); relativeOffsetSpinner.setModel(spinnerModel); relativeOffsetSpinner.setEditor(new FloatEditor(relativeOffsetSpinner)); relativeOffsetSpinner.setEnabled(true); relativeOffsetSpinner.setToolTipText("The offset of the next box"); relativeOffsetSpinner.setPreferredSize(new Dimension(60, 20)); relativeOffsetSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.setPermOffset(new Double((Float) spinnerModel.getValue())); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return relativeOffsetSpinner; } JSpinner getRootBackOffsetSpinner() { if (rootBackOffsetSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); rootBackOffsetSpinner = new JSpinner(); rootBackOffsetSpinner.setModel(spinnerModel); rootBackOffsetSpinner.setEditor(new FloatEditor(rootBackOffsetSpinner)); rootBackOffsetSpinner.setEnabled(true); rootBackOffsetSpinner.setToolTipText("The offset of the previous box, when this is a root box"); rootBackOffsetSpinner.setPreferredSize(new Dimension(60, 20)); rootBackOffsetSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.rootBackOffset = new Double((Float) spinnerModel.getValue()); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return rootBackOffsetSpinner; } JSpinner getBorderWidthSpinner() { if (borderWidthSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); spinnerModel.setStepsize(.1f); borderWidthSpinner = new JSpinner(); borderWidthSpinner.setModel(spinnerModel); borderWidthSpinner.setEditor(new FloatEditor(borderWidthSpinner)); borderWidthSpinner.setEnabled(true); borderWidthSpinner.setToolTipText("The width of the borderline"); borderWidthSpinner.setPreferredSize(new Dimension(60, 20)); borderWidthSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.borderlineWidth = new Double((Float) spinnerModel.getValue()); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return borderWidthSpinner; } JSpinner getCornerCurveSpinner() { if (cornerCurveSpinner == null) { final SpinnerNumberModel spinnerModel = new SpinnerNumberModel(); spinnerModel.setMaximum(10000); spinnerModel.setMinimum(0); spinnerModel.setValue(0); cornerCurveSpinner = new JSpinner(); cornerCurveSpinner.setModel(spinnerModel); cornerCurveSpinner.setEditor(new NumberEditor(cornerCurveSpinner)); cornerCurveSpinner.setEnabled(true); cornerCurveSpinner.setToolTipText("The curve amount of the corner"); cornerCurveSpinner.setPreferredSize(new Dimension(60, 20)); cornerCurveSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.cornerCurve = (Integer)(spinnerModel.getValue()); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return cornerCurveSpinner; } JSpinner getIntrudeWidthSpinner() { if (intrudeWidthSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); intrudeWidthSpinner = new JSpinner(); intrudeWidthSpinner.setModel(spinnerModel); intrudeWidthSpinner.setEditor(new FloatEditor(intrudeWidthSpinner)); intrudeWidthSpinner.setEnabled(true); intrudeWidthSpinner.setToolTipText("The box width if intruding"); intrudeWidthSpinner.setPreferredSize(new Dimension(60, 20)); intrudeWidthSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.intrudeWidth = new Double((Float) spinnerModel.getValue()); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return intrudeWidthSpinner; } private JCheckBox getIntrusionCheckBox() { if (intrusionCheckBox == null) { intrusionCheckBox = new JCheckBox(); intrusionCheckBox.setText("Intrusion"); intrusionCheckBox.setSelected(true); intrusionCheckBox.addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged(java.awt.event.ItemEvent e) { if (!maskEvents) { maskEvents = true; selectedStyle.isIntruding = intrusionCheckBox.isSelected(); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return intrusionCheckBox; } private JComboBox getTextPositionsComboBox() { if (textPositionsComboBox == null) { textPositionsComboBox = new JComboBox(); textPositionsComboBox.setToolTipText("The list of text positions"); textPositionsComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { if(!maskEvents){ maskEvents = true; textPositionsSpinner.getModel().setValue( (Double)selectedStyle.textPositions.get( textPositionsComboBox.getSelectedIndex())); maskEvents = false; } } }); } return textPositionsComboBox; } JSpinner getTextPositionsSpinner() { if (textPositionsSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); textPositionsSpinner = new JSpinner(); textPositionsSpinner.setModel(spinnerModel); textPositionsSpinner.setEditor(new FloatEditor(textPositionsSpinner)); textPositionsSpinner.setEnabled(true); textPositionsSpinner.setToolTipText("The position of the texts"); textPositionsSpinner.setPreferredSize(new Dimension(60, 20)); textPositionsSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.textPositions.set(textPositionsComboBox.getSelectedIndex(), new Double((Float) spinnerModel.getValue())); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return textPositionsSpinner; } JButton getTextPositionsButton() { if (textPositionsButton == null) { textPositionsButton = new JButton("Add Line"); textPositionsButton.setEnabled(true); textPositionsButton.setToolTipText("Add a new position data type"); textPositionsButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { if(!maskEvents){ selectedStyle.textPositions.add(0.0); textPositionsComboBox.addItem(new String("Line " + selectedStyle.textPositions.size() + 1)); refreshBoxes(); } } }); } return textPositionsButton; } JSpinner getTextMarginSpinner() { if (textMarginSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); textMarginSpinner = new JSpinner(); textMarginSpinner.setModel(spinnerModel); textMarginSpinner.setEditor(new FloatEditor(textMarginSpinner)); textMarginSpinner.setEnabled(true); textMarginSpinner.setToolTipText("The horizontal margin of text in their boxes."); textMarginSpinner.setPreferredSize(new Dimension(60, 20)); textMarginSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.textMargin = new Double((Float) spinnerModel.getValue()); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return textMarginSpinner; } private JComboBox getBoxLayoutComboBox() { if (boxLayoutComboBox == null) { boxLayoutComboBox = new JComboBox(); boxLayoutComboBox.setToolTipText("The layout of the text"); for (edu.byu.cs.roots.opg.chart.preset.templates.BoxLayoutParent layout : Layouts.textboxlayouts.list){ boxLayoutComboBox.addItem(layout); } boxLayoutComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { if(!maskEvents){ maskEvents = true; if (parent.options == null) System.out.println("BLARHG!"); selectedStyle.layout = (edu.byu.cs.roots.opg.chart.preset.templates.BoxLayoutParent)boxLayoutComboBox.getSelectedItem(); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return boxLayoutComboBox; } private JComboBox getWeddingLayoutComboBox() { if (weddingLayoutComboBox == null) { weddingLayoutComboBox = new JComboBox(); weddingLayoutComboBox.setToolTipText("The layout of the wedding text"); for (edu.byu.cs.roots.opg.chart.preset.templates.BoxLayoutParent layout : Layouts.textboxlayouts.weddinglist){ weddingLayoutComboBox.addItem(layout); } weddingLayoutComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { if(!maskEvents){ maskEvents = true; selectedStyle.weddingLayout = (edu.byu.cs.roots.opg.chart.preset.templates.BoxLayoutParent)weddingLayoutComboBox.getSelectedItem(); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return weddingLayoutComboBox; } JSpinner getEndLineArrowSpinner() { if (endLineArrowSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); endLineArrowSpinner = new JSpinner(); endLineArrowSpinner.setModel(spinnerModel); endLineArrowSpinner.setEditor(new FloatEditor(endLineArrowSpinner)); endLineArrowSpinner.setEnabled(true); endLineArrowSpinner.setToolTipText("The length of the end of line arrow"); endLineArrowSpinner.setPreferredSize(new Dimension(60, 20)); endLineArrowSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.endLineArrowShaftLength = new Double((Float) spinnerModel.getValue());parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return endLineArrowSpinner; } JSpinner getEndLineArrowHeightSpinner() { if (endLineArrowHeightSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); endLineArrowHeightSpinner = new JSpinner(); endLineArrowHeightSpinner.setModel(spinnerModel); endLineArrowHeightSpinner.setEditor(new FloatEditor(endLineArrowHeightSpinner)); endLineArrowHeightSpinner.setEnabled(true); endLineArrowHeightSpinner.setToolTipText("The height of the shaft of the end of line arrow"); endLineArrowHeightSpinner.setPreferredSize(new Dimension(60, 20)); endLineArrowHeightSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.endLineArrowShaftHeight = new Double((Float) spinnerModel.getValue()); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return endLineArrowHeightSpinner; } JSpinner getEndLineArrowFontSpinner() { if (endLineArrowFontSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); endLineArrowFontSpinner = new JSpinner(); endLineArrowFontSpinner.setModel(spinnerModel); endLineArrowFontSpinner.setEditor(new FloatEditor(endLineArrowFontSpinner)); endLineArrowFontSpinner.setEnabled(true); endLineArrowFontSpinner.setToolTipText("The size of the font of the end of line arrow"); endLineArrowFontSpinner.setPreferredSize(new Dimension(60, 20)); endLineArrowFontSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.endLineArrowFontSize = new Double((Float) spinnerModel.getValue());parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return endLineArrowFontSpinner; } JSpinner getEndLineArrowHeadSpinner() { if (endLineArrowHeadSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); endLineArrowHeadSpinner = new JSpinner(); endLineArrowHeadSpinner.setModel(spinnerModel); endLineArrowHeadSpinner.setEditor(new FloatEditor(endLineArrowHeadSpinner)); endLineArrowHeadSpinner.setEnabled(true); endLineArrowHeadSpinner.setToolTipText("The size of arrow head at the end of line arrow"); endLineArrowHeadSpinner.setPreferredSize(new Dimension(60, 20)); endLineArrowHeadSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.endLineArrowHeadLength = new Double((Float) spinnerModel.getValue());parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return endLineArrowHeadSpinner; } JSpinner getEndLineArrowHeadHeightSpinner() { if (endLineArrowHeadHeightSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); endLineArrowHeadHeightSpinner = new JSpinner(); endLineArrowHeadHeightSpinner.setModel(spinnerModel); endLineArrowHeadHeightSpinner.setEditor(new FloatEditor(endLineArrowHeadHeightSpinner)); endLineArrowHeadHeightSpinner.setEnabled(true); endLineArrowHeadHeightSpinner.setToolTipText("The height of the arrow head at the end of line arrow"); endLineArrowHeadHeightSpinner.setPreferredSize(new Dimension(60, 20)); endLineArrowHeadHeightSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.endLineArrowHeadHeight = new Double((Float) spinnerModel.getValue());parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return endLineArrowHeadHeightSpinner; } private JComboBox getTextDirectionComboBox() { if (textDirectionComboBox == null) { textDirectionComboBox = new JComboBox(); textDirectionComboBox.setToolTipText("The direction of the text"); textDirectionComboBox.addItem(StylingBox.TextDirection.NORMAL); textDirectionComboBox.addItem(StylingBox.TextDirection.NINETY); textDirectionComboBox.addItem(StylingBox.TextDirection.ONE_EIGHTY); textDirectionComboBox.addItem(StylingBox.TextDirection.TWO_SEVENTY); textDirectionComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { if(!maskEvents){ maskEvents = true; selectedStyle.direction = (StylingBox.TextDirection)textDirectionComboBox.getSelectedItem(); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return textDirectionComboBox; } private JComboBox getWeddingLocationComboBox() { if (weddingLocationComboBox == null) { weddingLocationComboBox = new JComboBox(); weddingLocationComboBox.setToolTipText("Where to position the wedding information"); weddingLocationComboBox.addItem(StylingBox.WeddingPositions.BOTH_POSTFIX); weddingLocationComboBox.addItem(StylingBox.WeddingPositions.DIRECT_DESCENDANT_POSTFIX); weddingLocationComboBox.addItem(StylingBox.WeddingPositions.HUSBAND_POSTFIX); weddingLocationComboBox.addItem(StylingBox.WeddingPositions.WIFE_POSTFIX); weddingLocationComboBox.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { if(!maskEvents){ maskEvents = true; selectedStyle.weddingDisplayType = (StylingBox.WeddingPositions)weddingLocationComboBox.getSelectedItem(); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return weddingLocationComboBox; } JSpinner getPaddingAmountSpinner() { if (paddingAmountSpinner == null) { final FloatSpinnerModel spinnerModel = new FloatSpinnerModel(); spinnerModel.setMaxvalue(10000); spinnerModel.setMinvalue(0); spinnerModel.setValue(0f); paddingAmountSpinner = new JSpinner(); paddingAmountSpinner.setModel(spinnerModel); paddingAmountSpinner.setEditor(new FloatEditor(paddingAmountSpinner)); paddingAmountSpinner.setEnabled(true); paddingAmountSpinner.setToolTipText("The mandatory white space needed between this box"); paddingAmountSpinner.setPreferredSize(new Dimension(60, 20)); paddingAmountSpinner.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent e) { if (maskEvents == false){ maskEvents = true; selectedStyle.paddingAmount = new Double((Float) spinnerModel.getValue()); parent.options.setStyleBoxChanged(true); parent.parent.refresh(); maskEvents = false; } } }); } return paddingAmountSpinner; } }