import org.simantics.g3d.scenegraph.base.INode;
import org.simantics.g3d.tools.ConstraintDetector;
import org.simantics.g3d.tools.DummyConstraintDetector;
-import org.simantics.g3d.vtk.action.vtkAction;
-import org.simantics.g3d.vtk.common.InteractiveVtkPanel;
import org.simantics.g3d.vtk.gizmo.TranslateAxisGizmo;
+import org.simantics.g3d.vtk.swt.InteractiveVtkComposite;
+import org.simantics.g3d.vtk.swt.vtkSwtAction;
import org.simantics.g3d.vtk.utils.vtkUtil;
import org.simantics.plant3d.Activator;
import org.simantics.plant3d.gizmo.SplitPointSelectionGizmo;
import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint.PositionType;
import org.simantics.plant3d.scenegraph.controlpoint.PipingRules;
import org.simantics.plant3d.utils.ComponentUtils;
-import org.simantics.utils.threads.AWTThread;
import org.simantics.utils.threads.ThreadUtils;
import org.simantics.utils.ui.ExceptionUtils;
import vtk.vtkProp;
import vtk.vtkTextActor;
-public class RoutePipeAction extends vtkAction {
+public class RoutePipeAction extends vtkSwtAction {
enum LockType {
X, Y, Z, XY, YZ, XZ, NONE, CUSTOM
};
private Set<PositionType> allowed = new HashSet<PositionType>();
- public RoutePipeAction(InteractiveVtkPanel panel, P3DRootNode root) {
+ public RoutePipeAction(InteractiveVtkComposite panel, P3DRootNode root) {
super(panel);
this.root = root;
setText("Route Pipe");
nodeMap.commit();
deattachUI();
super.deattach();
- panel.repaint();
+ panel.refresh();
}
public void attach() {
return;
super.attach();
- ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {
+ ThreadUtils.asyncExec(panel.getThreadQueue(), new Runnable() {
public void run() {
// attachUI();
try {
private void deattachUI() {
//panel.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
+ panel.lock();
if (translateAxisGizmo.isAttached())
translateAxisGizmo.deattach();
if (splitPointSelectionGizmo.isAttached())
if (terminalSelectionGizmo.isAttached())
terminalSelectionGizmo.deattach();
if (infoActor != null) {
- panel.GetRenderer().RemoveActor(infoActor);
+ panel.getRenderer().RemoveActor(infoActor);
infoActor.Delete();
infoActor = null;
}
+ panel.unlock();
}
private List<PipelineComponent> added = new ArrayList<PipelineComponent>();
@Override
- public void keyPressed(KeyEvent e) {
+ public boolean keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
panel.useDefaultAction();
if (lock != LockType.CUSTOM) {
update();
-
+ return true;
}
private void update() {
- panel.repaint();
+ panel.refresh();
}
private void update(double x, double y) {
switch (state) {
return;
} else {
terminalSelectionGizmo.setComponent(startComponent, allowed);
- terminalSelectionGizmo.attach(panel.GetRenderer());
+ terminalSelectionGizmo.attach(panel);
state = ToolState.SELECTING_POSITION;
- panel.repaint();
+ update();
}
}
straightCP.setNext(start);
}
}
- translateAxisGizmo.attach(panel.GetRenderer());
+ translateAxisGizmo.attach(panel);
setPreviousPosition(previousPosition);
updateCurrentPoint();
}
}
- translateAxisGizmo.attach(panel.GetRenderer());
+ translateAxisGizmo.attach(panel);
setPreviousPosition(previousPosition);
updateCurrentPoint();
}
Point3d p2 = new Point3d();
start.getInlineControlPointEnds(p1, p2);
splitPointSelectionGizmo.setSplit(p1, p2);
- splitPointSelectionGizmo.attach(panel.GetRenderer());
+ splitPointSelectionGizmo.attach(panel);
state = ToolState.SELECTING_SPLIT;
}
public void deactivate() {
}
@Override
- public void mousePressed(MouseEvent e) {
+ public boolean mousePressed(MouseEvent e) {
if (useDefault) {
- panel.getDefaultAction().mousePressed(e);
+ getDefaultAction().mousePressed(e);
}
+ return true;
}
@Override
- public void mouseReleased(MouseEvent e) {
+ public boolean mouseReleased(MouseEvent e) {
if (useDefault) {
- panel.getDefaultAction().mouseReleased(e);
+ getDefaultAction().mouseReleased(e);
}
+ return true;
}
@Override
- public void mouseClicked(MouseEvent e) {
+ public boolean mouseClicked(MouseEvent e) {
if (useDefault) {
- panel.getDefaultAction().mouseClicked(e);
- return;
+ getDefaultAction().mouseClicked(e);
+ return true;
}
if (state == ToolState.ROUTING) {
try {
} else if (state == ToolState.SELECTING_POSITION) {
if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON1) {
int type = panel.getPickType();
- panel.setPickType(0);
+ //panel.setPickType(0);
+ panel.setPickType(5);
vtkProp[] picked = panel.pick(e.getX(), e.getY());
panel.setPickType(type);
PositionType position = terminalSelectionGizmo.getPickedPosition(picked);
splitPointSelectionGizmo.deattach();
if (t == null) {
panel.useDefaultAction();
- return;
+ return true;
}
try {
Vector3d pos = new Vector3d(t);
}
}
}
-
+ return true;
}
private InlineComponent createBranchSplit(InlineComponent component, Vector3d pos) throws Exception{
}
@Override
- public void mouseMoved(MouseEvent e) {
+ public boolean mouseMoved(MouseEvent e) {
if (useDefault) {
- panel.getDefaultAction().mouseMoved(e);
- return;
+ getDefaultAction().mouseMoved(e);
+ return true;
}
step = ((e.getModifiers() & MouseEvent.CTRL_DOWN_MASK) > 0);
update(e.getX(), e.getY());
+ return true;
}
@Override
- public void mouseDragged(MouseEvent e) {
+ public boolean mouseDragged(MouseEvent e) {
if (useDefault)
- panel.getDefaultAction().mouseDragged(e);
+ getDefaultAction().mouseDragged(e);
+ return true;
}
endType = null;
endPort = null;
- Ray ray = vtkUtil.createMouseRay(panel.GetRenderer(),x, y);
+ Ray ray = vtkUtil.createMouseRay(panel.getRenderer(),x, y);
Vector3d o = new Vector3d(ray.pos);
Vector3d d = ray.dir;
updateRoute(o,d);
}
- panel.repaint();
-
-
-
-
+ panel.refresh();
}
private boolean updateCurrentPoint(Vector3d o, Vector3d d) {
MathTools.intersectStraightPlane(o, d, point, new Vector3d(1.0,0.0,0.0), currentPosition);
break;
case NONE:
- Vector3d normal = new Vector3d(panel.GetRenderer().GetActiveCamera().GetDirectionOfProjection());
+ Vector3d normal = new Vector3d(panel.getRenderer().GetActiveCamera().GetDirectionOfProjection());
normal.normalize();
MathTools.intersectStraightPlane(o, d, point, normal, currentPosition);
infoActor.SetPosition(10,10);
- panel.GetRenderer().AddActor(infoActor);
+ panel.getRenderer().AddActor(infoActor);
}
infoActor.SetInput(text);
}