git-svn-id: https://svn.coded.pt/svn/SIPRP@1375 bb69d46d-e84e-40c8-a05a-06db0d633741

lxbfYeaa
Tiago Malhado 15 years ago
parent fe1675b26c
commit b1ebcb4c7f

@ -0,0 +1,71 @@
package leaf.ui;
import java.awt.Insets;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
import com.evolute.entity.evo.EvoDataException;
import com.evolute.utils.error.ErrorLogger;
import siprp.data.outer.HsRiscoData;
import siprp.data.outer.HsRiscoMedidaData;
import siprp.data.outer.HsRiscoTemaData;
public abstract class DraggableLeafTree extends LeafTree
{
private static final long serialVersionUID = 1L;
public DraggableLeafTree( TreeModel model )
{
super(model);
setDragEnabled( true );
setAutoscrolls( true );
setDropTarget();
}
public abstract void setDropTarget( );
public void autoscroll( Point cursorLocation )
{
Insets insets = getAutoscrollInsets();
Rectangle outer = getVisibleRect();
Rectangle inner = new Rectangle( outer.x + insets.left, outer.y + insets.top, outer.width - ( insets.left+insets.right ), outer.height - ( insets.top+insets.bottom ) );
if ( !inner.contains(cursorLocation ) )
{
Rectangle scrollRect = new Rectangle( cursorLocation.x - insets.left, cursorLocation.y - insets.top, insets.left + insets.right, insets.top + insets.bottom );
scrollRectToVisible(scrollRect);
}
}
public Insets getAutoscrollInsets()
{
return new Insets( 20, 20, 20, 20 );
}
public Object getSelectedObject()
{
DefaultMutableTreeNode node = getSelectedNode();
return node == null ? null : node.getUserObject();
}
public DefaultMutableTreeNode getSelectedNode()
{
TreePath path = getSelectionPath();
return path == null ? null : (DefaultMutableTreeNode) path.getLastPathComponent();
}
}

@ -0,0 +1,183 @@
package siprp.higiene.gestao.riscos;
import java.awt.Point;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import siprp.data.outer.HsRiscoData;
import siprp.data.outer.HsRiscoMedidaData;
import siprp.data.outer.HsRiscoTemaData;
import com.evolute.entity.evo.EvoDataException;
import com.evolute.utils.error.ErrorLogger;
public class DnDRiscosListener implements DropTargetListener
{
private TreeRiscos tree;
private boolean drag = true;
public DnDRiscosListener( TreeRiscos tree )
{
this.tree = tree;
}
@Override
public void dragEnter(DropTargetDragEvent dtde)
{
DefaultMutableTreeNode node = ( ( DefaultMutableTreeNode ) tree.getSelectionPath().getParentPath().getLastPathComponent() );
if ( node.getUserObject() == null )
{
drag = false;
dtde.rejectDrag();
}
else
{
drag = true;
}
}
@Override
public void dragExit(DropTargetEvent dte)
{
}
@Override
public void dragOver(DropTargetDragEvent dtde)
{
Point pt = dtde.getLocation();
tree.autoscroll( pt );
if( drag )
{
TreePath parentpath = tree.getClosestPathForLocation(pt.x, pt.y);
Object destObject = ( (DefaultMutableTreeNode )parentpath.getLastPathComponent() ).getUserObject();
if( tree.getSelectedMedida() != null && ( destObject instanceof HsRiscoTemaData ) )
{
tree.expandPath( parentpath );
}
}
}
@Override
public void drop(DropTargetDropEvent dtde)
{
System.out.println( "Drop" );
Point pt = dtde.getLocation();
TreePath destinyPath = tree.getClosestPathForLocation(pt.x, pt.y);
Object destinyComponent = destinyPath.getLastPathComponent();
System.out.println( destinyPath );
System.out.println( );
if( destinyComponent instanceof DefaultMutableTreeNode )
{
System.out.println("moving node ...");
DefaultMutableTreeNode destinyNode = ( DefaultMutableTreeNode ) destinyComponent;
Object destinyObject = destinyNode.getUserObject();
TreePath parentPath = tree.getSelectionPath();
Object parentComponent = parentPath.getLastPathComponent();
if( parentComponent instanceof DefaultMutableTreeNode )
{
DefaultMutableTreeNode parentNode = ( DefaultMutableTreeNode ) parentComponent;
Object parentObject = parentNode.getUserObject();
if( destinyObject instanceof HsRiscoTemaData )
{
System.out.println("\tmove risco -> tema");
HsRiscoTemaData destTema = ( HsRiscoTemaData ) destinyObject;
if ( parentObject instanceof HsRiscoData )
{
moveRisco( destinyNode, parentNode, parentObject, destTema );
}
}
else if( destinyObject instanceof HsRiscoData )
{
if ( parentObject instanceof HsRiscoData )
{
destinyComponent = destinyPath.getParentPath().getLastPathComponent();
destinyNode = ( DefaultMutableTreeNode )destinyComponent;
destinyObject = destinyNode.getUserObject();
HsRiscoTemaData destTema = ( HsRiscoTemaData ) destinyObject;
moveRisco( destinyNode, parentNode, parentObject, destTema );
}
}
else if( destinyObject instanceof HsRiscoData )
{
System.out.println("\tmove medida -> risco");
HsRiscoData destRisco = ( HsRiscoData ) destinyObject;
if ( parentObject instanceof HsRiscoMedidaData )
{
moveMedida( destinyNode, parentNode, parentObject, destRisco );
}
}
else if( destinyObject instanceof HsRiscoMedidaData )
{
destinyComponent = destinyPath.getParentPath().getLastPathComponent();
destinyNode = ( DefaultMutableTreeNode ) destinyComponent;
destinyObject = destinyNode.getUserObject();
HsRiscoData destRisco = ( HsRiscoData ) destinyObject;
if ( parentObject instanceof HsRiscoMedidaData )
{
moveMedida( destinyNode, parentNode, parentObject, destRisco );
}
}
}
}
}
@Override
public void dropActionChanged(DropTargetDragEvent dtde)
{
}
private void moveMedida( DefaultMutableTreeNode destinyNode, DefaultMutableTreeNode parentNode, Object parentObject, HsRiscoData destRisco )
{
HsRiscoMedidaData parent = ( HsRiscoMedidaData ) parentObject;
parent.setToRisco_id( destRisco );
try
{
parent.save();
destinyNode.add( parentNode );
tree.updateUI();
}
catch ( EvoDataException e )
{
ErrorLogger.logException( e );
}
}
private void moveRisco( DefaultMutableTreeNode destinyNode, DefaultMutableTreeNode parentNode, Object parentObject, HsRiscoTemaData destTema )
{
HsRiscoData parent = ( HsRiscoData ) parentObject;
parent.setToTema_id( destTema );
try
{
parent.save();
destinyNode.add( parentNode );
tree.updateUI();
}
catch ( EvoDataException e )
{
ErrorLogger.logException( e );
}
}
}

@ -9,12 +9,6 @@ import info.clearthought.layout.TableLayoutConstraints;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
@ -29,14 +23,12 @@ 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 siprp.data.outer.HsMedidaData;
import siprp.data.outer.HsRiscoData;
@ -45,8 +37,6 @@ import siprp.data.outer.HsRiscoTemaData;
import siprp.higiene.gestao.SIPRPLazyLoadedPanel;
import siprp.logic.HigieneSegurancaLogic;
import com.evolute.entity.evo.EvoDataException;
import com.evolute.utils.error.ErrorLogger;
import com.evolute.utils.ui.trees.TreeTools;
public class GerirRiscosPanel extends SIPRPLazyLoadedPanel implements LeafUIConstants
@ -92,7 +82,7 @@ public class GerirRiscosPanel extends SIPRPLazyLoadedPanel implements LeafUICons
private final DefaultTreeModel model = new DefaultTreeModel( root );
private final LeafTree tree = new LeafTree( model );
private final TreeRiscos tree = new TreeRiscos( model );
private final JScrollPane scroll = new JScrollPane( tree );
@ -192,124 +182,6 @@ public class GerirRiscosPanel extends SIPRPLazyLoadedPanel implements LeafUICons
}
}
} );
DropTargetListener dropTargetListener = new DropTargetListener() {
@Override
public void dragEnter(DropTargetDragEvent dtde)
{
// System.out.println( "DragEnter" );
// System.out.println( tree.getSelectionPath() );
// getSelectedObject();
// dtde.acceptDrag( dtde.getDropAction() );
//TODO: isDesendent != null
}
@Override
public void dragExit(DropTargetEvent dte)
{
System.out.println( "DragExit" );
}
@Override
public void dragOver(DropTargetDragEvent dtde)
{
// Point pt = dtde.getLocation();
// TreePath parentpath = tree.getClosestPathForLocation(pt.x, pt.y);
// if( !tree.getSelectionPath().equals( parentpath ) )
// {
// tree.expandPath( parentpath );
// }
}
@Override
public void drop(DropTargetDropEvent dtde)
{
System.out.println( "Drop" );
Point pt = dtde.getLocation();
TreePath destinyPath = tree.getClosestPathForLocation(pt.x, pt.y);
Object destinyComponent = destinyPath.getLastPathComponent();
System.out.println( destinyPath );
System.out.println( );
if( destinyComponent instanceof DefaultMutableTreeNode )
{
System.out.println("moving node ...");
DefaultMutableTreeNode destinyNode = ( DefaultMutableTreeNode ) destinyComponent;
Object destinyObject = destinyNode.getUserObject();
TreePath parentPath = tree.getSelectionPath();
Object parentComponent = parentPath.getLastPathComponent();
if( parentComponent instanceof DefaultMutableTreeNode )
{
DefaultMutableTreeNode parentNode = ( DefaultMutableTreeNode ) parentComponent;
Object parentObject = parentNode.getUserObject();
if( destinyObject instanceof HsRiscoTemaData )
{
System.out.println("\tmove risco -> tema");
HsRiscoTemaData destTema = ( HsRiscoTemaData ) destinyObject;
if ( parentObject instanceof HsRiscoData )
{
HsRiscoData parent = ( HsRiscoData ) parentObject;
parent.setToTema_id( destTema );
try
{
parent.save();
destinyNode.add( parentNode );
tree.updateUI();
}
catch ( EvoDataException e )
{
ErrorLogger.logException( e );
}
}
}
else if( destinyObject instanceof HsRiscoData )
{
System.out.println("\tmove medida -> risco");
HsRiscoData destRisco = ( HsRiscoData ) destinyObject;
if ( parentObject instanceof HsRiscoMedidaData )
{
HsRiscoMedidaData parent = ( HsRiscoMedidaData ) parentObject;
parent.setToRisco_id( destRisco );
try
{
parent.save();
destinyNode.add( parentNode );
tree.updateUI();
}
catch ( EvoDataException e )
{
ErrorLogger.logException( e );
}
}
}
}
}
}
@Override
public void dropActionChanged(DropTargetDragEvent dtde)
{
System.out.println( "DropActionChange" );
}
};
tree.setDragEnabled( true );
tree.setDropTarget( new DropTarget( tree , dropTargetListener ) );
}
private void criarTema()
@ -525,32 +397,17 @@ public class GerirRiscosPanel extends SIPRPLazyLoadedPanel implements LeafUICons
private HsRiscoTemaData getSelectedTema()
{
Object object = getSelectedObject();
return object == null ? null : ((object instanceof HsRiscoTemaData) ? (HsRiscoTemaData) object : null);
return tree.getSelectedTema();
}
private HsRiscoData getSelectedRisco()
{
Object object = getSelectedObject();
return object == null ? null : ((object instanceof HsRiscoData) ? (HsRiscoData) object : null);
return tree.getSelectedRisco();
}
private HsRiscoMedidaData getSelectedMedida()
{
Object object = getSelectedObject();
return object == null ? null : ((object instanceof HsRiscoMedidaData) ? (HsRiscoMedidaData) object : null);
}
private Object getSelectedObject()
{
DefaultMutableTreeNode node = getSelectedNode();
return node == null ? null : node.getUserObject();
}
private DefaultMutableTreeNode getSelectedNode()
{
TreePath path = tree.getSelectionPath();
return path == null ? null : (DefaultMutableTreeNode) path.getLastPathComponent();
return tree.getSelectedMedida();
}
private void startupComponents()

@ -0,0 +1,46 @@
package siprp.higiene.gestao.riscos;
import java.awt.dnd.DropTarget;
import javax.swing.tree.TreeModel;
import siprp.data.outer.HsRiscoData;
import siprp.data.outer.HsRiscoMedidaData;
import siprp.data.outer.HsRiscoTemaData;
import leaf.ui.DraggableLeafTree;
public class TreeRiscos extends DraggableLeafTree
{
private static final long serialVersionUID = 1L;
public TreeRiscos( TreeModel model )
{
super( model );
}
@Override
public void setDropTarget()
{
setDropTarget( new DropTarget( this , new DnDRiscosListener( this ) ) );
}
public HsRiscoTemaData getSelectedTema()
{
Object object = getSelectedObject();
return object == null ? null : ((object instanceof HsRiscoTemaData) ? (HsRiscoTemaData) object : null);
}
public HsRiscoData getSelectedRisco()
{
Object object = getSelectedObject();
return object == null ? null : ((object instanceof HsRiscoData) ? (HsRiscoData) object : null);
}
public HsRiscoMedidaData getSelectedMedida()
{
Object object = getSelectedObject();
return object == null ? null : ((object instanceof HsRiscoMedidaData) ? (HsRiscoMedidaData) object : null);
}
}
Loading…
Cancel
Save