Author: paperwing
Date: 2012-03-08 14:58:38 -0800 (Thu, 08 Mar 2012)
New Revision: 28459
Added:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngine.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/GraphicsData.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/LightingData.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/LightMovementInputHandler.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/MainInputProcessor.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderArcEdgesProcedure.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderLightsProcedure.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderNodesProcedure.java
Log:
Representation of light position is not drawn unless the light is being drag
moved; added InputHandler to create context menus, now capable of creating a
context menu at the place where a right-click takes place
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
2012-03-08 22:35:37 UTC (rev 28458)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
2012-03-08 22:58:38 UTC (rev 28459)
@@ -123,6 +123,8 @@
component.addKeyListener(keys);
component.addFocusListener(keys);
+
+ graphicsData.setContainer(component);
}
/** Main drawing method; can be called by an {@link Animator} such as
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngine.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngine.java
2012-03-08 22:35:37 UTC (rev 28458)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngine.java
2012-03-08 22:58:38 UTC (rev 28459)
@@ -108,7 +108,7 @@
// TODO: check whether to use GLCanvas or
GLJPanel
panel = new GLJPanel(capabilities);
-
+
// TODO: check if negative effects produced by
this
panel.setIgnoreRepaint(true);
// panel.setDoubleBuffered(true);
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/GraphicsData.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/GraphicsData.java
2012-03-08 22:35:37 UTC (rev 28458)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/GraphicsData.java
2012-03-08 22:58:38 UTC (rev 28459)
@@ -1,5 +1,6 @@
package org.cytoscape.paperwing.internal.data;
+import java.awt.Component;
import java.util.Map;
import java.util.Set;
@@ -67,6 +68,8 @@
/** A boolean to disable real-time shape picking to improve framerate */
private boolean disableHovering;
+ private Component container;
+
/**
* A {@link GraphicsSelectionData} object which is responsible for
* storing all data related to selection of objects in the network, such
@@ -262,4 +265,12 @@
public void setLightingData(LightingData lightingData) {
this.lightingData = lightingData;
}
+
+ public void setContainer(Component container) {
+ this.container = container;
+ }
+
+ public Component getContainer() {
+ return container;
+ }
}
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/LightingData.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/LightingData.java
2012-03-08 22:35:37 UTC (rev 28458)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/LightingData.java
2012-03-08 22:58:38 UTC (rev 28459)
@@ -61,4 +61,13 @@
return displayLight[index];
}
+ /**
+ * Set whether a light at a given index should be drawn to indicate its
position.
+ *
+ * @param index The index of the light, ranging from 0 to
LightingData.NUM_LIGHTS (default 8)
+ * @param display Whether or not a representation of the light should
be drawn to indicate its position.
+ */
+ public void setDisplayLight(int index, boolean display) {
+ displayLight[index] = display;
+ }
}
Added:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
(rev 0)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
2012-03-08 22:58:38 UTC (rev 28459)
@@ -0,0 +1,34 @@
+package org.cytoscape.paperwing.internal.input;
+
+import java.awt.event.MouseEvent;
+import java.util.Set;
+
+import javax.swing.JMenuItem;
+import javax.swing.JPopupMenu;
+
+import org.cytoscape.paperwing.internal.data.GraphicsData;
+
+/**
+ * Input handler responsible for creating the right-click context menu.
+ */
+public class ContextMenuInputHandler implements InputHandler {
+
+ @Override
+ public void processInput(KeyboardMonitor keys, MouseMonitor mouse,
+ GraphicsData graphicsData) {
+
+ processNetworkRightClickMenu(mouse, graphicsData);
+ }
+
+ private void processNetworkRightClickMenu(MouseMonitor mouse,
GraphicsData graphicsData){
+ Set<Integer> pressed = mouse.getPressed();
+
+ if (pressed.contains(MouseEvent.BUTTON3)) {
+ JPopupMenu menu = new JPopupMenu("Empty Menu");
+ menu.add(new JMenuItem("Sample Action"));
+
+ System.out.println("Creating context menu at : " +
mouse.x() + ", " + mouse.y());
+ menu.show(graphicsData.getContainer(), mouse.x(),
mouse.y());
+ }
+ }
+}
Property changes on:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/LightMovementInputHandler.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/LightMovementInputHandler.java
2012-03-08 22:35:37 UTC (rev 28458)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/LightMovementInputHandler.java
2012-03-08 22:58:38 UTC (rev 28459)
@@ -1,5 +1,7 @@
package org.cytoscape.paperwing.internal.input;
+import javax.swing.JPopupMenu;
+
import org.cytoscape.paperwing.internal.WindVisualLexicon;
import org.cytoscape.paperwing.internal.data.GraphicsData;
import org.cytoscape.paperwing.internal.data.GraphicsSelectionData;
@@ -54,16 +56,16 @@
camera.getPosition(), currentLightPosition,
camera.getDirection());
// Capture mouse position
- if (mouse.getPressed().contains(MouseEvent.BUTTON3)) {
+ if (mouse.getPressed().contains(MouseEvent.BUTTON1)) {
currentMouseProjection.set(
- GeometryToolkit.convertMouseTo3d(mouse,
graphicsData, mouseProjectionDistance));
+ GeometryToolkit.convertMouseTo3d(mouse,
graphicsData, mouseProjectionDistance));
}
// Capture new mouse position and use displacement to move
lights
if (mouse.hasMoved()
- && mouse.getHeld().contains(MouseEvent.BUTTON3)
- &&
keys.getHeld().contains(KeyEvent.VK_CONTROL)) {
+ && mouse.getHeld().contains(MouseEvent.BUTTON1)
+ && keys.getHeld().contains(KeyEvent.VK_ALT)) {
previousMouseProjection.set(currentMouseProjection);
currentMouseProjection.set(
@@ -79,7 +81,14 @@
1.0f);
updateLightVisualProperties(light,
graphicsData.getNetworkView());
+
+ lightingData.setDisplayLight(0, true);
}
+
+ if (mouse.getReleased().contains(MouseEvent.BUTTON1)) {
+ lightingData.setDisplayLight(0, false);
+ }
+
}
private void updateLightVisualProperties(Light light, CyNetworkView
networkView) {
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/MainInputProcessor.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/MainInputProcessor.java
2012-03-08 22:35:37 UTC (rev 28458)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/MainInputProcessor.java
2012-03-08 22:58:38 UTC (rev 28459)
@@ -21,6 +21,7 @@
inputHandlers.add(new NetworkChangeInputHandler());
inputHandlers.add(new LightMovementInputHandler());
+ inputHandlers.add(new ContextMenuInputHandler());
}
public void processInput(KeyboardMonitor keys, MouseMonitor mouse,
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderArcEdgesProcedure.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderArcEdgesProcedure.java
2012-03-08 22:35:37 UTC (rev 28458)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderArcEdgesProcedure.java
2012-03-08 22:58:38 UTC (rev 28459)
@@ -177,8 +177,6 @@
CyNetworkView networkView = graphicsData.getNetworkView();
GL2 gl = graphicsData.getGlContext();
- gl.glDisable(GL2.GL_LIGHTING);
-
float[] specularReflection = { 0.1f, 0.1f, 0.1f, 1.0f };
gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_SPECULAR,
FloatBuffer.wrap(specularReflection));
@@ -266,8 +264,6 @@
}
}
}
-
- gl.glEnable(GL2.GL_LIGHTING);
}
// Picks a color according to the edgeView and passes it to OpenGL
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderLightsProcedure.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderLightsProcedure.java
2012-03-08 22:35:37 UTC (rev 28458)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderLightsProcedure.java
2012-03-08 22:58:38 UTC (rev 28459)
@@ -36,15 +36,18 @@
// Draw the light at index 0
Light light = lightingData.getLight(0);
- float[] lightPosition = light.getPosition();
- gl.glPushMatrix();
- gl.glTranslatef(lightPosition[0], lightPosition[1],
lightPosition[2]);
-
- gl.glColor3f(1.0f, 1.0f, 0.6f);
- shapeDrawer.drawShape(gl, ShapeType.SHAPE_SPHERE);
-
- gl.glPopMatrix();
+ if (lightingData.displayLight(0)) {
+ float[] lightPosition = light.getPosition();
+
+ gl.glPushMatrix();
+ gl.glTranslatef(lightPosition[0], lightPosition[1],
lightPosition[2]);
+
+ gl.glColor3f(1.0f, 1.0f, 0.6f);
+ shapeDrawer.drawShape(gl, ShapeType.SHAPE_SPHERE);
+
+ gl.glPopMatrix();
+ }
}
}
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderNodesProcedure.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderNodesProcedure.java
2012-03-08 22:35:37 UTC (rev 28458)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/rendering/RenderNodesProcedure.java
2012-03-08 22:58:38 UTC (rev 28459)
@@ -64,7 +64,7 @@
float[] specularReflection = { 0.46f, 0.46f, 0.46f, 1.0f };
gl.glMaterialfv(GL2.GL_FRONT, GL2.GL_SPECULAR,
FloatBuffer.wrap(specularReflection));
- gl.glMateriali(GL2.GL_FRONT, GL2.GL_SHININESS, 21);
+ gl.glMateriali(GL2.GL_FRONT, GL2.GL_SHININESS, 13);
CyNetworkView networkView = graphicsData.getNetworkView();
float distanceScale = graphicsData.getDistanceScale();
--
You received this message because you are subscribed to the Google Groups
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/cytoscape-cvs?hl=en.