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.
466 lines
11 KiB
466 lines
11 KiB
package siprp.higiene.gestao.postos;
|
|
|
|
import static com.evolute.utils.strings.UnicodeLatin1Map.aacute;
|
|
import static com.evolute.utils.strings.UnicodeLatin1Map.atilde;
|
|
import static com.evolute.utils.strings.UnicodeLatin1Map.ccedil;
|
|
import static com.evolute.utils.strings.UnicodeLatin1Map.eacute;
|
|
import info.clearthought.layout.TableLayout;
|
|
import info.clearthought.layout.TableLayoutConstraints;
|
|
|
|
import java.awt.Dimension;
|
|
import java.awt.GridLayout;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.awt.event.ItemEvent;
|
|
import java.awt.event.ItemListener;
|
|
import java.util.Collections;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
import javax.swing.BorderFactory;
|
|
import javax.swing.JCheckBox;
|
|
import javax.swing.JOptionPane;
|
|
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.TreeNode;
|
|
import javax.swing.tree.TreePath;
|
|
import javax.swing.tree.TreeSelectionModel;
|
|
|
|
import leaf.ui.LeafButton;
|
|
import leaf.ui.LeafDialog;
|
|
import leaf.ui.LeafIconButton;
|
|
import leaf.ui.LeafTree;
|
|
import leaf.ui.LeafUIConstants;
|
|
import shst.data.outer.EmpresasData;
|
|
import shst.data.outer.HsAreaData;
|
|
import shst.data.outer.HsPostoData;
|
|
import shst.logic.node.AreaNode;
|
|
import shst.logic.node.PostoNode;
|
|
|
|
import com.evolute.utils.ui.trees.TreeTools;
|
|
|
|
public class GerirAreasPanel extends JPanel implements LeafUIConstants
|
|
{
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
private final JPanel panelButtons = new JPanel();
|
|
|
|
private final JPanel panelTree = new JPanel();
|
|
|
|
public final LeafButton buttonAreaCriar = LeafIconButton.createDefaultNewButton();
|
|
|
|
public final LeafButton buttonAreaEditar = LeafIconButton.createDefaultEditButton();
|
|
|
|
public final LeafButton buttonAreaRemover = LeafIconButton.createDefaultRemoveButton();
|
|
|
|
public final LeafButton buttonPostoCriar = LeafIconButton.createDefaultNewButton();
|
|
|
|
public final LeafButton buttonPostoEditar = LeafIconButton.createDefaultEditButton();
|
|
|
|
public final LeafButton buttonPostoRemover = LeafIconButton.createDefaultRemoveButton();
|
|
|
|
private final JCheckBox checkGenerico = new JCheckBox( "Gen"+eacute+"rico" );
|
|
|
|
private final DefaultMutableTreeNode root = new DefaultMutableTreeNode();
|
|
|
|
private final DefaultTreeModel model = new DefaultTreeModel( root );
|
|
|
|
public final LeafTree tree = new LeafTree( model );
|
|
|
|
private final JScrollPane scroll = new JScrollPane( tree );
|
|
|
|
private EmpresasData empresa = null;
|
|
|
|
public GerirAreasPanel()
|
|
{
|
|
startupComponents();
|
|
startupLayout();
|
|
placeComponents();
|
|
setupListeners();
|
|
}
|
|
|
|
private void startupComponents()
|
|
{
|
|
panelButtons.setPreferredSize( new Dimension( 150, 0 ) );
|
|
panelTree.setPreferredSize( new Dimension( 300, 0 ) );
|
|
tree.setRootVisible( false );
|
|
tree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION );
|
|
}
|
|
|
|
private void startupLayout()
|
|
{
|
|
TableLayout layout = new TableLayout( new double[] {
|
|
TableLayout.FILL
|
|
}, new double[] {
|
|
TableLayout.MINIMUM, TableLayout.FILL
|
|
} );
|
|
layout.setHGap( 5 );
|
|
layout.setVGap( 5 );
|
|
setLayout( layout );
|
|
|
|
layout = new TableLayout( new double[] {
|
|
TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.MINIMUM, TableLayout.FILL
|
|
}, new double[] {
|
|
TableLayout.MINIMUM
|
|
} );
|
|
layout.setHGap( 5 );
|
|
layout.setVGap( 5 );
|
|
panelButtons.setLayout( layout );
|
|
|
|
layout = new TableLayout( new double[] {
|
|
TableLayout.FILL
|
|
}, new double[] {
|
|
TableLayout.FILL
|
|
} );
|
|
layout.setHGap( 5 );
|
|
layout.setVGap( 5 );
|
|
panelTree.setLayout( layout );
|
|
}
|
|
|
|
private void placeComponents()
|
|
{
|
|
JPanel panel = new JPanel();
|
|
panel.setBorder( BorderFactory.createTitledBorder( "Area" ) );
|
|
panel.setLayout( new GridLayout( 1, 3 ) );
|
|
panel.add( buttonAreaCriar );
|
|
panel.add( buttonAreaEditar );
|
|
panel.add( buttonAreaRemover );
|
|
panelButtons.add( panel, new TableLayoutConstraints( 0, 0 ) );
|
|
|
|
panel = new JPanel();
|
|
panel.setBorder( BorderFactory.createTitledBorder( "Posto" ) );
|
|
panel.setLayout( new GridLayout( 1, 3 ) );
|
|
panel.add( buttonPostoCriar );
|
|
panel.add( buttonPostoEditar );
|
|
panel.add( buttonPostoRemover );
|
|
panelButtons.add( panel, new TableLayoutConstraints( 1, 0 ) );
|
|
|
|
panelButtons.add( checkGenerico, new TableLayoutConstraints(2,0));
|
|
|
|
panelTree.add( scroll, new TableLayoutConstraints( 0, 0 ) );
|
|
|
|
add( panelButtons, new TableLayoutConstraints( 0, 0 ) );
|
|
add( panelTree, new TableLayoutConstraints( 0, 1 ) );
|
|
}
|
|
|
|
private void setupListeners()
|
|
{
|
|
tree.getSelectionModel().addTreeSelectionListener( new TreeSelectionListener()
|
|
{
|
|
@Override
|
|
public void valueChanged( TreeSelectionEvent e )
|
|
{
|
|
setSelected();
|
|
}
|
|
} );
|
|
buttonAreaCriar.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
criarArea();
|
|
}
|
|
} );
|
|
buttonAreaEditar.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
editarArea();
|
|
}
|
|
} );
|
|
buttonAreaRemover.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
removerArea();
|
|
}
|
|
} );
|
|
buttonPostoCriar.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
criarPosto();
|
|
}
|
|
} );
|
|
buttonPostoEditar.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
editarPosto();
|
|
}
|
|
} );
|
|
buttonPostoRemover.addActionListener( new ActionListener()
|
|
{
|
|
@Override
|
|
public void actionPerformed( ActionEvent e )
|
|
{
|
|
removerPosto();
|
|
}
|
|
} );
|
|
checkGenerico.addItemListener( new ItemListener()
|
|
{
|
|
@Override
|
|
public void itemStateChanged( ItemEvent e )
|
|
{
|
|
HsPostoData posto = getSelectedPosto();
|
|
if( posto != null )
|
|
{
|
|
posto.setIs_principal( checkGenerico.isSelected() );
|
|
try
|
|
{
|
|
posto.save();
|
|
} catch( Exception e1 )
|
|
{
|
|
e1.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
} );
|
|
}
|
|
|
|
private void criarArea()
|
|
{
|
|
try
|
|
{
|
|
if( empresa != null )
|
|
{
|
|
String areaString = JOptionPane.showInputDialog( this, "Descri" + ccedil + atilde + "o", "Criar nova " + aacute + "rea", JOptionPane.QUESTION_MESSAGE );
|
|
if( areaString != null )
|
|
{
|
|
HsAreaData area = new HsAreaData();
|
|
area.setToEmpresa_id( empresa );
|
|
area.setDescription( areaString );
|
|
area.save();
|
|
refresh();
|
|
}
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void editarArea()
|
|
{
|
|
try
|
|
{
|
|
HsAreaData area = getSelectedArea();
|
|
if( area != null )
|
|
{
|
|
String areaString = JOptionPane.showInputDialog( this, "Descri" + ccedil + atilde + "o", area.getDescription() );
|
|
if( areaString != null )
|
|
{
|
|
area.setDescription( areaString );
|
|
area.save();
|
|
refresh();
|
|
}
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void removerArea()
|
|
{
|
|
HsAreaData area = getSelectedArea();
|
|
if( area != null )
|
|
{
|
|
List< HsPostoData > listPostos = area.fromHsPosto_area_id();
|
|
if ( listPostos != null && listPostos.size() > 0 )
|
|
{
|
|
JOptionPane.showMessageDialog( this, "Tem de remover todos os postos primeiro.", "Erro", JOptionPane.ERROR_MESSAGE );
|
|
}
|
|
else if ( LeafDialog.confirmDelete( false, false, aacute + "rea") )
|
|
{
|
|
try
|
|
{
|
|
area.setDeleted_date( new java.sql.Timestamp( new Date().getTime() ) );
|
|
area.save();
|
|
// area.delete();
|
|
refresh();
|
|
}
|
|
catch ( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void criarPosto()
|
|
{
|
|
try
|
|
{
|
|
HsAreaData area = getSelectedArea();
|
|
if( area != null )
|
|
{
|
|
String postoString = JOptionPane.showInputDialog( this, "Descri" + ccedil + atilde + "o", "Criar novo posto de trabalho", JOptionPane.QUESTION_MESSAGE );
|
|
if( postoString != null )
|
|
{
|
|
HsPostoData posto = new HsPostoData();
|
|
posto.setToArea_id( area );
|
|
posto.setDescription( postoString );
|
|
posto.save();
|
|
refresh();
|
|
}
|
|
refresh();
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void editarPosto()
|
|
{
|
|
try
|
|
{
|
|
HsPostoData posto = getSelectedPosto();
|
|
if( posto != null )
|
|
{
|
|
String postoString = JOptionPane.showInputDialog( this, "Descri" + ccedil + atilde + "o", posto.getDescription() );
|
|
if( postoString != null )
|
|
{
|
|
posto.setDescription( postoString );
|
|
posto.save();
|
|
refresh();
|
|
}
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private void removerPosto()
|
|
{
|
|
try
|
|
{
|
|
HsPostoData posto = getSelectedPosto();
|
|
if( posto != null && LeafDialog.confirmDelete( true, false, "posto" ) )
|
|
{
|
|
posto.setDeleted_date( new java.sql.Timestamp( new Date().getTime() ) );
|
|
posto.save();
|
|
refresh();
|
|
}
|
|
} catch( Exception e )
|
|
{
|
|
LeafDialog.error( e );
|
|
}
|
|
}
|
|
|
|
private HsAreaData getSelectedArea()
|
|
{
|
|
HsAreaData result = null;
|
|
TreePath path = tree.getSelectionPath();
|
|
if( path != null )
|
|
{
|
|
Object leaf = path.getLastPathComponent();
|
|
if( leaf != null )
|
|
{
|
|
if( leaf instanceof AreaNode )
|
|
{
|
|
result = (HsAreaData) ((AreaNode) leaf).getUserObject();
|
|
}
|
|
else if( leaf instanceof PostoNode )
|
|
{
|
|
result = (HsAreaData) ((HsPostoData) ((PostoNode) leaf).getUserObject()).toArea_id();
|
|
}
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private HsPostoData getSelectedPosto()
|
|
{
|
|
HsPostoData result = null;
|
|
TreePath path = tree.getSelectionPath();
|
|
if( path != null )
|
|
{
|
|
Object leaf = path.getLastPathComponent();
|
|
if( leaf != null && (leaf instanceof PostoNode) )
|
|
{
|
|
result = (HsPostoData) ((PostoNode) leaf).getUserObject();
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private void setSelected()
|
|
{
|
|
TreePath path = tree.getSelectionPath();
|
|
TreeNode node = path == null ? null : (TreeNode) path.getLastPathComponent();
|
|
boolean areaSelected = node != null && (node instanceof AreaNode);
|
|
boolean postoSelected = node != null && (node instanceof PostoNode);
|
|
buttonPostoCriar.setEnabled( areaSelected || postoSelected );
|
|
buttonPostoEditar.setEnabled( postoSelected );
|
|
buttonPostoRemover.setEnabled( postoSelected );
|
|
buttonAreaRemover.setEnabled( areaSelected );
|
|
buttonAreaCriar.setEnabled( empresa != null );
|
|
buttonAreaEditar.setEnabled( areaSelected );
|
|
checkGenerico.setEnabled( postoSelected );
|
|
boolean generico = false;
|
|
if( postoSelected && node != null)
|
|
{
|
|
HsPostoData posto = (HsPostoData) ((PostoNode) node).getUserObject();
|
|
generico = posto != null && (posto.getIs_principal() ==null ? false : posto.getIs_principal() );
|
|
}
|
|
checkGenerico.setSelected(generico);
|
|
}
|
|
|
|
public void refresh()
|
|
{
|
|
root.removeAllChildren();
|
|
if( empresa != null )
|
|
{
|
|
List<HsAreaData> areas = empresa.fromHsArea_empresa_id();
|
|
Collections.sort( areas );
|
|
for( HsAreaData area : areas )
|
|
{
|
|
addArea( area );
|
|
}
|
|
}
|
|
setSelected();
|
|
TreeTools.refreshTree( tree, root, false );
|
|
}
|
|
|
|
private void addArea( HsAreaData area )
|
|
{
|
|
if( area != null )
|
|
{
|
|
AreaNode areaNode = new AreaNode( area );
|
|
for( HsPostoData posto : area.fromHsPosto_area_id() )
|
|
{
|
|
addPosto( posto, areaNode );
|
|
}
|
|
root.add( areaNode );
|
|
}
|
|
}
|
|
|
|
private void addPosto( HsPostoData posto, AreaNode areaNode )
|
|
{
|
|
if( posto != null && posto.getDeleted_date() == null )
|
|
{
|
|
PostoNode postoNode = new PostoNode( posto );
|
|
areaNode.add( postoNode );
|
|
}
|
|
}
|
|
|
|
public void setEmpresa( EmpresasData empresa )
|
|
{
|
|
this.empresa = empresa;
|
|
refresh();
|
|
}
|
|
|
|
}
|