package siprp.higiene.relatorio; import info.clearthought.layout.TableLayout; import info.clearthought.layout.TableLayoutConstraints; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTree; 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.TreeTools; import siprp.database.cayenne.objects.HsRelatorio; import siprp.database.cayenne.objects.HsRelatorioPosto; import siprp.logic.HigieneSegurancaLogic; public class AdicionarAreasRelatorioPanel extends JPanel { private static final long serialVersionUID = 1L; public static final String SELECTION_CHANGED = "SELECTION_CHANGED"; private final LeafButton buttonAdicionar = new LeafButton("Adicionar"); private final LeafButton buttonRemover = new LeafButton("Remover"); private final DefaultMutableTreeNode root = new DefaultMutableTreeNode(); private final DefaultTreeModel model = new DefaultTreeModel( root ); public final JTree tree = new JTree( model ); private final JScrollPane scroll = new JScrollPane( tree ); private HsRelatorio relatorio = null; public AdicionarAreasRelatorioPanel() { 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.FILL, TableLayout.MINIMUM }, 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( 2, 0 ) ); add( panel, new TableLayoutConstraints( 0, 0 ) ); add( scroll, new TableLayoutConstraints( 0, 1 ) ); } private void startupListeners() { tree.getSelectionModel().addTreeSelectionListener( new TreeSelectionListener(){ @Override public void valueChanged( TreeSelectionEvent e ) { setEnabled(); TreePath path = tree.getSelectionPath(); Object object = path == null ? null : path.getLastPathComponent(); HsRelatorioPosto posto = object == null ? null : ( (object instanceof PostoRelatorioNode) ? (HsRelatorioPosto) ((PostoRelatorioNode) object).getUserObject() : null); firePropertyChange( SELECTION_CHANGED, null, posto ); } } ); } private void setEnabled() { buttonAdicionar.setEnabled( false ); buttonRemover.setEnabled( false ); } public void refresh() { root.removeAllChildren(); if( relatorio != null ) { TreeTools.merge( root, HigieneSegurancaLogic.getAreasRelatorioTree( relatorio ) ); } setEnabled(); TreeTools.refreshTree( tree, root ); } public void setRelatorio( HsRelatorio relatorio ) { this.relatorio = relatorio; refresh(); } }