package siprp.higiene.gestao; import info.clearthought.layout.TableLayout; import info.clearthought.layout.TableLayoutConstraints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import leaf.ui.LeafButton; import leaf.ui.LeafIconButton; import leaf.ui.LeafTree; public abstract class AdicionarPanel extends JPanel { private static final long serialVersionUID = 1L; private static final String ICON_NAME_SAVE = "siprp/higiene/gestao/add.png"; private static final String ICON_NAME_REVERT = "siprp/higiene/gestao/delete.png"; protected final LeafButton buttonAdicionar = LeafIconButton.createButton( ICON_NAME_SAVE ); protected final LeafButton buttonRemover = LeafIconButton.createButton( ICON_NAME_REVERT ); public static final String SELECTION_CHANGED = "SELECTION_CHANGED"; protected final DefaultMutableTreeNode root = new DefaultMutableTreeNode(); protected final DefaultTreeModel model = new DefaultTreeModel( root ); protected final LeafTree tree = new LeafTree( model ); protected final JScrollPane scroll = new JScrollPane( tree ); public AdicionarPanel() { startupComponents(); setupLayout(); placeComponents(); startupListeners(); } private void startupComponents() { buttonAdicionar.setEnabled( false ); buttonRemover.setEnabled( false ); tree.setRootVisible( false ); tree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION ); } private void setupLayout() { TableLayout layout = new TableLayout( new double[] { TableLayout.FILL }, new double[] { TableLayout.MINIMUM, TableLayout.FILL } ); layout.setHGap( 5 ); layout.setVGap( 5 ); setLayout( layout ); } private void placeComponents() { JPanel panel = new JPanel(); TableLayout layout = new TableLayout( new double[] { TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.FILL }, new double[] { TableLayout.MINIMUM } ); layout.setHGap( 5 ); layout.setVGap( 5 ); panel.setLayout( layout ); panel.add( buttonAdicionar, new TableLayoutConstraints( 0, 0 ) ); panel.add( buttonRemover, new TableLayoutConstraints( 1, 0 ) ); add( panel, new TableLayoutConstraints( 0, 0 ) ); add( scroll, new TableLayoutConstraints( 0, 1 ) ); } private void startupListeners() { buttonAdicionar.addActionListener( new ActionListener() { @Override public void actionPerformed( ActionEvent e ) { add(); } } ); buttonRemover.addActionListener( new ActionListener() { @Override public void actionPerformed( ActionEvent e ) { rem(); } } ); tree.getSelectionModel().addTreeSelectionListener( new TreeSelectionListener() { @Override public void valueChanged( TreeSelectionEvent e ) { TreePath path = tree.getSelectionPath(); if( path != null ) { Object selection = path.getLastPathComponent(); firePropertyChange( SELECTION_CHANGED, null, selection ); } setEnabled(); } } ); } protected abstract void rem(); protected abstract void add(); protected abstract void setEnabled(); public abstract void refresh(); }