/******************************************************************************* * Copyright (c) 2016 Weasis Team and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Nicolas Roduit - initial API and implementation *******************************************************************************/ package org.weasis.core.ui.dialog; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.Window; import java.awt.event.WindowEvent; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JColorChooser; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.border.EmptyBorder; import org.weasis.core.api.gui.util.JMVUtils; import org.weasis.core.api.util.StringUtil; import org.weasis.core.ui.Messages; public abstract class PropertiesDialog extends JDialog { private static final long serialVersionUID = 8140414207263317080L; private final JPanel panel1 = new JPanel(); private final BorderLayout borderLayout1 = new BorderLayout(); private final JPanel jPanelFooter = new JPanel(); private final JButton jButtonOk = new JButton(); private final JButton jButtonCancel = new JButton(); private final GridBagLayout gridBagLayout2 = new GridBagLayout(); private final JPanel jPanel1 = new JPanel(); private final GridBagLayout gridBagLayout1 = new GridBagLayout(); protected final JSpinner spinnerLineWidth = new JSpinner(); protected final JLabel jLabelLineWidth = new JLabel(); protected final JLabel jLabelLineColor = new JLabel(); protected final JButton jButtonColor = new JButton(); protected final JCheckBox jCheckBoxFilled = new JCheckBox(); protected final JLabel lbloverridesmultipleValues = new JLabel(Messages.getString("PropertiesDialog.header_override")); //$NON-NLS-1$ protected final JCheckBox checkBoxColor = new JCheckBox(); protected final JCheckBox checkBoxWidth = new JCheckBox(); protected final JCheckBox checkBoxFill = new JCheckBox(); public PropertiesDialog(Window parent, String title) { super(parent, title, ModalityType.APPLICATION_MODAL); init(); } private void init() { panel1.setBorder(new EmptyBorder(0, 15, 0, 15)); panel1.setLayout(borderLayout1); jButtonOk.setText(Messages.getString("PropertiesDialog.ok")); //$NON-NLS-1$ jButtonOk.addActionListener(e -> okAction()); jButtonCancel.setText(Messages.getString("PropertiesDialog.cancel")); //$NON-NLS-1$ jButtonCancel.addActionListener(e -> quitWithoutSaving()); jPanelFooter.setLayout(gridBagLayout2); jPanel1.setLayout(gridBagLayout1); JMVUtils.setNumberModel(spinnerLineWidth, 1, 1, 8, 1); jLabelLineWidth.setText(Messages.getString("PropertiesDialog.line_width") + StringUtil.COLON); //$NON-NLS-1$ jLabelLineColor.setText(Messages.getString("PropertiesDialog.line_color") + StringUtil.COLON); //$NON-NLS-1$ jButtonColor.setText(Messages.getString("MeasureTool.pick")); //$NON-NLS-1$ jButtonColor.addActionListener(e -> openColorChooser((JButton) e.getSource())); jCheckBoxFilled.setText(Messages.getString("PropertiesDialog.fill_shape")); //$NON-NLS-1$ getContentPane().add(panel1); panel1.add(jPanelFooter, BorderLayout.SOUTH); jPanelFooter.add(jButtonCancel, new GridBagConstraints(1, 1, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(30, 15, 15, 15), 0, 0)); jPanelFooter.add(jButtonOk, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(30, 15, 15, 15), 0, 0)); panel1.add(jPanel1, BorderLayout.CENTER); GridBagConstraints gbcLbloverridesmultipleValues = new GridBagConstraints(); gbcLbloverridesmultipleValues.insets = new Insets(15, 10, 0, 25); gbcLbloverridesmultipleValues.gridx = 2; gbcLbloverridesmultipleValues.gridy = 0; lbloverridesmultipleValues.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(3, 3, 3, 3))); lbloverridesmultipleValues.setOpaque(true); jPanel1.add(lbloverridesmultipleValues, gbcLbloverridesmultipleValues); jPanel1.add(jLabelLineColor, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(10, 25, 0, 0), 0, 0)); jPanel1.add(jButtonColor, new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(10, 2, 0, 0), 0, 0)); GridBagConstraints gbcCheckBoxColor = new GridBagConstraints(); gbcCheckBoxColor.insets = new Insets(10, 0, 0, 0); gbcCheckBoxColor.gridx = 2; gbcCheckBoxColor.gridy = 1; checkBoxColor.addActionListener(e -> { JCheckBox box = (JCheckBox) e.getSource(); jButtonColor.setEnabled(box.isSelected()); }); checkBoxWidth.addActionListener(e -> { JCheckBox box = (JCheckBox) e.getSource(); spinnerLineWidth.setEnabled(box.isSelected()); }); checkBoxFill.addActionListener(e -> { JCheckBox box = (JCheckBox) e.getSource(); jCheckBoxFilled.setEnabled(box.isSelected()); }); jPanel1.add(checkBoxColor, gbcCheckBoxColor); jPanel1.add(jLabelLineWidth, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.NONE, new Insets(10, 25, 0, 0), 0, 0)); jPanel1.add(spinnerLineWidth, new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(10, 2, 0, 0), 0, 0)); GridBagConstraints gbcCheckBoxWidth = new GridBagConstraints(); gbcCheckBoxWidth.insets = new Insets(10, 0, 0, 0); gbcCheckBoxWidth.gridx = 2; gbcCheckBoxWidth.gridy = 2; jPanel1.add(checkBoxWidth, gbcCheckBoxWidth); jPanel1.add(jCheckBoxFilled, new GridBagConstraints(0, 3, 2, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(10, 0, 0, 0), 0, 0)); GridBagConstraints gbcCheckBoxFill = new GridBagConstraints(); gbcCheckBoxFill.insets = new Insets(10, 0, 0, 0); gbcCheckBoxFill.gridx = 2; gbcCheckBoxFill.gridy = 3; jPanel1.add(checkBoxFill, gbcCheckBoxFill); } // Overridden so we can exit when window is closed @Override protected void processWindowEvent(WindowEvent e) { if (e.getID() == WindowEvent.WINDOW_CLOSING) { quitWithoutSaving(); } super.processWindowEvent(e); } protected abstract void okAction(); protected void quitWithoutSaving() { dispose(); } public static void openColorChooser(JButton button) { if (button != null) { Color newColor = JColorChooser.showDialog(button, Messages.getString("MeasureTool.pick_color"), button.getBackground()); //$NON-NLS-1$ if (newColor != null) { button.setBackground(newColor); } } } }