/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.segmentation.gui.settings; import net.codjo.gui.toolkit.LabelledItemPanel; import net.codjo.mad.gui.request.util.ButtonPanelGui; import java.awt.Insets; import java.awt.BorderLayout; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JInternalFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextArea; import javax.swing.JTextField; /** * Ecran d�tail d'un axe de segmentation. */ public class ClassificationStructureGui extends JInternalFrame { private JComboBox classificationType; private JTextField classificationName; private AxisTree axisTree; private JTextField sleeveCode; private JTextField sleeveName; private JCheckBox sleeveDustbin; private JTextArea formula; private ButtonPanelGui buttonPanelGui; private JPanel mainPanel; private AxisTreeToolBar axisTreeToolBar; private JButton editExpressionButton; private LabelledItemPanel classifExtensionPanel; private LabelledItemPanel sleeveExtensionPanel; private JPanel classificationPanel; private List<JComponent> sleeveExtensionFields = new ArrayList<JComponent>(); private Map<JComponent, ActionListener> mapComponentListener = new HashMap<JComponent, ActionListener>(); private int maximumNodeDepth; ClassificationStructureGui(String title) { super(title, true, true, true, true); axisTree.setClassificationStructureGui(this); getContentPane().add(mainPanel); classifExtensionPanel.setLabelLeftAlignment(true); sleeveExtensionPanel.setLabelLeftAlignment(true); } public LabelledItemPanel getSleeveExtensionPanel() { return sleeveExtensionPanel; } public LabelledItemPanel getClassifExtensionPanel() { return classifExtensionPanel; } public void switchToUpdateMode() { } public ButtonPanelGui getButtonPanelGui() { return buttonPanelGui; } public AxisTree getAxisTree() { return axisTree; } public JTextField getSleeveName() { return sleeveName; } public JTextField getClassificationName() { return classificationName; } public AxisTreeToolBar getAxisTreeToolBar() { return axisTreeToolBar; } public String getFormulaText() { return formula.getText(); } public JComboBox getClassificationType() { return classificationType; } public void enableFormula(boolean isEnabled) { editExpressionButton.setEnabled(isEnabled); } public void setSleeveNameEnabled(boolean isEnabled) { sleeveName.setEnabled(isEnabled); } public void setSleeveDustbinEnabled(boolean isEnabled) { sleeveDustbin.setEnabled(isEnabled); } public void setSleeveEditExpressionButtonEnabled(boolean isEnabled) { editExpressionButton.setEnabled(isEnabled); } public void setSleeveExtensionFieldsEnabled(boolean isEnabled) { for (JComponent myComponent : sleeveExtensionFields) { myComponent.setEnabled(isEnabled); } } public void addActionListener(JComponent component, ActionListener actionListener) { mapComponentListener.put(component, actionListener); if (component instanceof JComboBox) { ((JComboBox)component).addActionListener(actionListener); } if (component instanceof JCheckBox) { ((JCheckBox)component).addActionListener(actionListener); } } @Override public void dispose() { super.dispose(); for (Map.Entry<JComponent, ActionListener> entry : mapComponentListener.entrySet()) { JComponent loopComponent = entry.getKey(); if (loopComponent instanceof JComboBox) { ((JComboBox)loopComponent).removeActionListener(entry.getValue()); } if (loopComponent instanceof JCheckBox) { ((JCheckBox)loopComponent).removeActionListener(entry.getValue()); } } } public void addExpressionActionListener(ExpressionButtonListener listener) { editExpressionButton.addActionListener(listener); } public boolean confirmClearFormula() { return JOptionPane.showConfirmDialog(null, "Etes vous s�r de vouloir convertir la poche en fourre-tout ?\nL'expression va �tre perdue !", "Confirmation", JOptionPane.YES_NO_OPTION) == JOptionPane .YES_OPTION; } public void addSleeveDustbinListener(ClassificationStructureLogic.DustbinListener listener) { sleeveDustbin.addActionListener(listener); } void addClassificationExtensionField(String label, JComponent component) { getClassifExtensionPanel().addItem(label, component, new Insets(0, 0, 2, 5), new Insets(0, 5, 2, 0)); } public void setClassificationExtensionPanel(JPanel panel) { classificationPanel.remove(classifExtensionPanel); classificationPanel.add(panel, BorderLayout.CENTER); } void addSleeveExtensionField(String label, JComponent component) { sleeveExtensionFields.add(component); getSleeveExtensionPanel().addItem(label, component, new Insets(0, 0, 2, 5), new Insets(0, 5, 2, 0)); } public JComponent getSleeveCode() { return sleeveCode; } public JComponent getFormula() { return formula; } public JComponent getSleeveDustbin() { return sleeveDustbin; } public void setMaximumNodeDepth(Integer maximumNodeDepth) { this.maximumNodeDepth = maximumNodeDepth; } public int getMaximumNodeDepth() { return maximumNodeDepth; } }