forked from Coded/SIPRP
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
499 lines
14 KiB
499 lines
14 KiB
package siprp.higiene.gestao.legislacao;
|
|
|
|
import static com.evolute.utils.strings.UnicodeLatin1Map.atilde;
|
|
import static com.evolute.utils.strings.UnicodeLatin1Map.ccedil;
|
|
import static com.evolute.utils.strings.UnicodeLatin1Map.iacute;
|
|
import info.clearthought.layout.TableLayout;
|
|
import info.clearthought.layout.TableLayoutConstraints;
|
|
|
|
import java.awt.GridLayout;
|
|
import java.awt.LayoutManager;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.beans.PropertyChangeEvent;
|
|
import java.beans.PropertyChangeListener;
|
|
import java.util.Date;
|
|
|
|
import javax.swing.BorderFactory;
|
|
import javax.swing.JOptionPane;
|
|
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.data.Validator;
|
|
import leaf.ui.LeafButton;
|
|
import leaf.ui.LeafDialog;
|
|
import leaf.ui.LeafIconButton;
|
|
import leaf.ui.LeafTextAreaEditor;
|
|
import leaf.ui.LeafTree;
|
|
import leaf.ui.LeafUIConstants;
|
|
import leaf.ui.TreeTools;
|
|
import siprp.database.cayenne.objects.HsLegislacao;
|
|
import siprp.database.cayenne.objects.HsLegislacaoCategoria;
|
|
import siprp.logic.HigieneSegurancaLogic;
|
|
|
|
public class GerirLegislacaoPanel extends JPanel implements LeafUIConstants
|
|
{
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
private final JPanel panelGeral = new JPanel();
|
|
|
|
private final JPanel panelCategorias = new JPanel();
|
|
|
|
private final JPanel panelButtonsGeral = new JPanel();
|
|
|
|
private final LeafButton buttonGeralCriar = LeafIconButton.createDefaultNewButton();
|
|
|
|
private final LeafButton buttonGeralRemover = LeafIconButton.createDefaultRemoveButton();
|
|
|
|
private final JPanel panelButtonsCategoriasCategoria = new JPanel();
|
|
|
|
private final LeafButton buttonCategoriaCriar = LeafIconButton.createDefaultNewButton();
|
|
|
|
private final LeafButton buttonCategoriaEditar = LeafIconButton.createDefaultEditButton();
|
|
|
|
private final LeafButton buttonCategoriaRemover = LeafIconButton.createDefaultRemoveButton();
|
|
|
|
private final JPanel panelButtonsCategoriasLegislacao = new JPanel();
|
|
|
|
private final LeafButton buttonCategoriasLegislacaoCriar = LeafIconButton.createDefaultNewButton();
|
|
|
|
private final LeafButton buttonCategoriasLegislacaoRemover = LeafIconButton.createDefaultRemoveButton();
|
|
|
|
private final DefaultMutableTreeNode rootGeral = new DefaultMutableTreeNode();
|
|
|
|
private final DefaultTreeModel modelGeral = new DefaultTreeModel( rootGeral );
|
|
|
|
private final LeafTree treeGeral = new LeafTree( modelGeral );
|
|
|
|
private final JScrollPane scrollGeral = new JScrollPane( treeGeral );
|
|
|
|
private final DefaultMutableTreeNode rootCategorias = new DefaultMutableTreeNode();
|
|
|
|
private final DefaultTreeModel modelCategorias = new DefaultTreeModel( rootCategorias );
|
|
|
|
private final LeafTree treeCategorias = new LeafTree( modelCategorias );
|
|
|
|
private final JScrollPane scrollCategorias = new JScrollPane( treeCategorias );
|
|
|
|
private HsLegislacao selectedLegislacaoGeral = null;
|
|
|
|
private HsLegislacao selectedLegislacaoEspecifica = null;
|
|
|
|
private HsLegislacaoCategoria selectedCategoria = null;
|
|
|
|
private final LeafTextAreaEditor panelData = new LeafTextAreaEditor( new Validator<String>()
|
|
{
|
|
@Override
|
|
public boolean isValid( String object )
|
|
{
|
|
return true;
|
|
}
|
|
} );
|
|
|
|
public GerirLegislacaoPanel()
|
|
{
|
|
startupComponents();
|
|
startupLayout();
|
|
placeComponents();
|
|
setupListeners();
|
|
reload();
|
|
setEnable();
|
|
}
|
|
|
|
private void startupComponents()
|
|
{
|
|
panelGeral.setBorder( BorderFactory.createTitledBorder( "Legisla" + ccedil + atilde + "o de aplica" + ccedil + atilde + "o geral" ) );
|
|
|
|
panelCategorias.setBorder( BorderFactory.createTitledBorder( "Legisla" + ccedil + atilde + "o espec" + iacute + "fica" ) );
|
|
panelButtonsCategoriasCategoria.setBorder( BorderFactory.createTitledBorder( "Categoria" ) );
|
|
panelButtonsCategoriasLegislacao.setBorder( BorderFactory.createTitledBorder( "Legisla" + ccedil + atilde + "o" ) );
|
|
|
|
treeCategorias.setRootVisible( false );
|
|
treeGeral.setRootVisible( false );
|
|
treeCategorias.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION );
|
|
treeGeral.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION );
|
|
}
|
|
|
|
private void startupLayout()
|
|
{
|
|
LayoutManager layout = new TableLayout( new double[] {
|
|
TableLayout.FILL, TableLayout.FILL
|
|
}, new double[] {
|
|
TableLayout.FILL, TableLayout.FILL
|
|
} );
|
|
this.setLayout( layout );
|
|
|
|
layout = new TableLayout( new double[] {
|
|
TableLayout.MINIMUM, TableLayout.FILL
|
|
}, new double[] {
|
|
TableLayout.MINIMUM, TableLayout.FILL
|
|
} );
|
|
panelGeral.setLayout( layout );
|
|
|
|
layout = new TableLayout( new double[] {
|
|
TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.FILL
|
|
}, new double[] {
|
|
TableLayout.MINIMUM, TableLayout.FILL
|
|
} );
|
|
panelCategorias.setLayout( layout );
|
|
|
|
layout = new GridLayout( 1, 2, 5, 5 );
|
|
panelButtonsGeral.setLayout( layout );
|
|
|
|
layout = new GridLayout( 1, 4, 5, 5 );
|
|
panelButtonsCategoriasCategoria.setLayout( layout );
|
|
|
|
layout = new GridLayout( 1, 4, 5, 5 );
|
|
panelButtonsCategoriasLegislacao.setLayout( layout );
|
|
}
|
|
|
|
private void placeComponents()
|
|
{
|
|
panelButtonsGeral.add( buttonGeralCriar );
|
|
panelButtonsGeral.add( buttonGeralRemover );
|
|
|
|
panelButtonsCategoriasCategoria.add( buttonCategoriaCriar );
|
|
panelButtonsCategoriasCategoria.add( buttonCategoriaEditar );
|
|
panelButtonsCategoriasCategoria.add( buttonCategoriaRemover );
|
|
panelButtonsCategoriasCategoria.add( new JPanel() );
|
|
|
|
panelButtonsCategoriasLegislacao.add( buttonCategoriasLegislacaoCriar );
|
|
panelButtonsCategoriasLegislacao.add( buttonCategoriasLegislacaoRemover );
|
|
panelButtonsCategoriasLegislacao.add( new JPanel() );
|
|
panelButtonsCategoriasLegislacao.add( new JPanel() );
|
|
|
|
panelGeral.add( panelButtonsGeral, new TableLayoutConstraints( 0, 0 ) );
|
|
panelGeral.add( scrollGeral, new TableLayoutConstraints( 0, 1, 1, 1 ) );
|
|
|
|
panelCategorias.add( panelButtonsCategoriasCategoria, new TableLayoutConstraints( 0, 0 ) );
|
|
panelCategorias.add( panelButtonsCategoriasLegislacao, new TableLayoutConstraints( 1, 0 ) );
|
|
panelCategorias.add( scrollCategorias, new TableLayoutConstraints( 0, 1, 2, 1 ) );
|
|
|
|
this.add( panelGeral, new TableLayoutConstraints( 0, 0 ) );
|
|
this.add( panelCategorias, new TableLayoutConstraints( 0, 1 ) );
|
|
this.add( panelData, new TableLayoutConstraints( 1, 0, 1, 1 ) );
|
|
}
|
|
|
|
private void setupListeners()
|
|
{
|
|
treeCategorias.getSelectionModel().addTreeSelectionListener( new TreeSelectionListener()
|
|
{
|
|
@Override
|
|
public void valueChanged( TreeSelectionEvent e )
|
|
{
|
|
TreePath selectionPath = e.getNewLeadSelectionPath();
|
|
if( selectionPath != null )
|
|
{
|
|
Object last = selectionPath.getLastPathComponent();
|
|
if( last instanceof DefaultMutableTreeNode )
|
|
{
|
|
Object userObject = ((DefaultMutableTreeNode) last).getUserObject();
|
|
if( userObject instanceof HsLegislacao )
|
|
{
|
|
selectedLegislacaoEspecifica = (HsLegislacao) userObject;
|
|
}
|
|
else if( userObject instanceof HsLegislacaoCategoria )
|
|
{
|
|
selectedCategoria = (HsLegislacaoCategoria) userObject;
|
|
}
|
|
}
|
|
treeGeral.clearSelection();
|
|
selectedLegislacaoGeral = null;
|
|
}
|
|
else
|
|
{
|
|
selectedLegislacaoEspecifica = null;
|
|
selectedCategoria = null;
|
|
}
|
|
refreshData();
|
|
setEnable();
|
|
}
|
|
} );
|
|
treeGeral.getSelectionModel().addTreeSelectionListener( new TreeSelectionListener()
|
|
{
|
|
@Override
|
|
public void valueChanged( TreeSelectionEvent e )
|
|
{
|
|
TreePath selectionPath = e.getNewLeadSelectionPath();
|
|
if( selectionPath != null )
|
|
{
|
|
Object last = selectionPath.getLastPathComponent();
|
|
if( last instanceof DefaultMutableTreeNode )
|
|
{
|
|
Object userObject = ((DefaultMutableTreeNode) last).getUserObject();
|
|
if( userObject instanceof HsLegislacao )
|
|
{
|
|
selectedLegislacaoGeral = (HsLegislacao) userObject;
|
|
}
|
|
}
|
|
treeCategorias.clearSelection();
|
|
selectedLegislacaoEspecifica = null;
|
|
selectedCategoria = null;
|
|
}
|
|
else
|
|
{
|
|
selectedLegislacaoGeral = null;
|
|
}
|
|
refreshData();
|
|
setEnable();
|
|
}
|
|
} );
|
|
panelData.addPropertyChangeListener( LeafTextAreaEditor.ACTION_SAVE, new PropertyChangeListener()
|
|
{
|
|
@Override
|
|
public void propertyChange( PropertyChangeEvent evt )
|
|
{
|
|
try
|
|
{
|
|
String newValue = (String) evt.getNewValue();
|
|
if( selectedLegislacaoEspecifica != null )
|
|
{
|
|
selectedLegislacaoEspecifica.setDescription( newValue );
|
|
selectedLegislacaoEspecifica.save();
|
|
}
|
|
else if( selectedLegislacaoGeral != null )
|
|
{
|
|
selectedLegislacaoGeral.setDescription( newValue );
|
|
selectedLegislacaoGeral.save();
|
|
}
|
|
reload();
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
} );
|
|
buttonCategoriaCriar.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
criarCategoria();
|
|
}
|
|
} );
|
|
buttonCategoriaEditar.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
editarCategoria();
|
|
}
|
|
} );
|
|
buttonCategoriaRemover.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
removerCategoria();
|
|
}
|
|
} );
|
|
buttonCategoriasLegislacaoCriar.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
criarCategoriaLegislacao();
|
|
}
|
|
} );
|
|
buttonCategoriasLegislacaoRemover.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
removerCategoriaLegislacao();
|
|
}
|
|
} );
|
|
buttonGeralCriar.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
criarGeral();
|
|
}
|
|
} );
|
|
buttonGeralRemover.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
removerGeral();
|
|
}
|
|
} );
|
|
}
|
|
|
|
private void criarCategoria()
|
|
{
|
|
try
|
|
{
|
|
String categoriaString = JOptionPane.showInputDialog( this, "Nova categoria", "" );
|
|
if( categoriaString != null )
|
|
{
|
|
HsLegislacaoCategoria novaCategoria = new HsLegislacaoCategoria();
|
|
novaCategoria.setDescription( categoriaString );
|
|
novaCategoria.save();
|
|
reload();
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void editarCategoria()
|
|
{
|
|
try
|
|
{
|
|
if( selectedCategoria != null )
|
|
{
|
|
String categoriaString = JOptionPane.showInputDialog( this, "Nova categoria", selectedCategoria.getDescription() );
|
|
if( categoriaString != null )
|
|
{
|
|
selectedCategoria.setDescription( categoriaString );
|
|
selectedCategoria.save();
|
|
reload();
|
|
}
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void removerCategoria()
|
|
{
|
|
try
|
|
{
|
|
if( selectedCategoria != null && LeafDialog.confirmDelete( false, false, "categoria" ) )
|
|
{
|
|
selectedCategoria.setDeletedDate( new Date() );
|
|
selectedCategoria.save();
|
|
reload();
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void criarCategoriaLegislacao()
|
|
{
|
|
try
|
|
{
|
|
if( selectedCategoria != null )
|
|
{
|
|
HsLegislacao novaLegislacao = new HsLegislacao();
|
|
novaLegislacao.setDescription( "" );
|
|
novaLegislacao.setToHsLegislacaoCategoria( selectedCategoria );
|
|
novaLegislacao.save();
|
|
reload();
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void removerCategoriaLegislacao()
|
|
{
|
|
try
|
|
{
|
|
if( selectedLegislacaoEspecifica != null && LeafDialog.confirmDelete( false, false, "legisla" + ccedil + atilde + "o" ) )
|
|
{
|
|
selectedLegislacaoEspecifica.setDeletedDate( new Date() );
|
|
selectedLegislacaoEspecifica.save();
|
|
reload();
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void removerGeral()
|
|
{
|
|
try
|
|
{
|
|
if( selectedLegislacaoGeral != null && LeafDialog.confirmDelete( false, false, "legisla" + ccedil + atilde + "o" ) )
|
|
{
|
|
selectedLegislacaoGeral.setDeletedDate( new Date() );
|
|
selectedLegislacaoGeral.save();
|
|
reload();
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void criarGeral()
|
|
{
|
|
try
|
|
{
|
|
HsLegislacao legislacao = new HsLegislacao();
|
|
legislacao.setDescription( "" );
|
|
legislacao.save();
|
|
reload();
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void reload()
|
|
{
|
|
rootGeral.removeAllChildren();
|
|
rootCategorias.removeAllChildren();
|
|
TreeTools.merge( rootGeral, HigieneSegurancaLogic.getLegislacaoGeral() );
|
|
TreeTools.merge( rootCategorias, HigieneSegurancaLogic.getLegislacaoEspecifica() );
|
|
TreeTools.refreshTree( treeGeral, rootGeral, false );
|
|
TreeTools.refreshTree( treeCategorias, rootCategorias, false );
|
|
}
|
|
|
|
private void refreshData()
|
|
{
|
|
buttonCategoriaEditar.setEnabled( false );
|
|
buttonCategoriaRemover.setEnabled( false );
|
|
buttonCategoriasLegislacaoCriar.setEnabled( false );
|
|
buttonCategoriasLegislacaoRemover.setEnabled( false );
|
|
buttonGeralRemover.setEnabled( false );
|
|
panelData.setEnabled( false );
|
|
if( selectedLegislacaoEspecifica != null )
|
|
{
|
|
panelData.setValue( selectedLegislacaoEspecifica.getDescription() );
|
|
panelData.setEnabled( true );
|
|
}
|
|
else if( selectedLegislacaoGeral != null )
|
|
{
|
|
panelData.setValue( selectedLegislacaoGeral.getDescription() );
|
|
panelData.setEnabled( true );
|
|
}
|
|
else
|
|
{
|
|
panelData.setValue( null );
|
|
}
|
|
if( selectedCategoria != null )
|
|
{
|
|
buttonCategoriaEditar.setEnabled( true );
|
|
buttonCategoriaRemover.setEnabled( true );
|
|
}
|
|
}
|
|
|
|
private void setEnable()
|
|
{
|
|
buttonCategoriaEditar.setEnabled( selectedCategoria != null );
|
|
buttonCategoriaRemover.setEnabled( selectedCategoria != null );
|
|
buttonCategoriasLegislacaoCriar.setEnabled( selectedCategoria != null );
|
|
buttonCategoriasLegislacaoRemover.setEnabled( selectedLegislacaoEspecifica != null );
|
|
buttonGeralRemover.setEnabled( selectedLegislacaoGeral != null );
|
|
}
|
|
|
|
}
|