Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fix Issue #616 - Link to nodes feature in data lab now directs the us…

…er to Add edge UI if only one node is selected.
  • Loading branch information...
commit 1daa71b0d3ffec837ee652f16193c72579870bf1 1 parent 77b973c
@eduramiba eduramiba authored
View
92 ...les/DataLaboratoryPlugin/src/main/java/org/gephi/datalab/plugin/manipulators/general/AddEdgeToGraph.java
@@ -1,43 +1,43 @@
/*
-Copyright 2008-2010 Gephi
-Authors : Eduardo Ramos <eduramiba@gmail.com>
-Website : http://www.gephi.org
-
-This file is part of Gephi.
-
-DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-Copyright 2011 Gephi Consortium. All rights reserved.
-
-The contents of this file are subject to the terms of either the GNU
-General Public License Version 3 only ("GPL") or the Common
-Development and Distribution License("CDDL") (collectively, the
-"License"). You may not use this file except in compliance with the
-License. You can obtain a copy of the License at
-http://gephi.org/about/legal/license-notice/
-or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the
-specific language governing permissions and limitations under the
-License. When distributing the software, include this License Header
-Notice in each file and include the License files at
-/cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the
-License Header, with the fields enclosed by brackets [] replaced by
-your own identifying information:
-"Portions Copyrighted [year] [name of copyright owner]"
-
-If you wish your version of this file to be governed by only the CDDL
-or only the GPL Version 3, indicate your decision by adding
-"[Contributor] elects to include this software in this distribution
-under the [CDDL or GPL Version 3] license." If you do not indicate a
-single choice of license, a recipient has the option to distribute
-your version of this file under either the CDDL, the GPL Version 3 or
-to extend the choice of license to its licensees as provided above.
-However, if you add GPL Version 3 code and therefore, elected the GPL
-Version 3 license, then the option applies only if the new code is
-made subject to such option by the copyright holder.
-
-Contributor(s):
-
-Portions Copyrighted 2011 Gephi Consortium.
+ Copyright 2008-2010 Gephi
+ Authors : Eduardo Ramos <eduramiba@gmail.com>
+ Website : http://www.gephi.org
+
+ This file is part of Gephi.
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 2011 Gephi Consortium. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 3 only ("GPL") or the Common
+ Development and Distribution License("CDDL") (collectively, the
+ "License"). You may not use this file except in compliance with the
+ License. You can obtain a copy of the License at
+ http://gephi.org/about/legal/license-notice/
+ or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the
+ specific language governing permissions and limitations under the
+ License. When distributing the software, include this License Header
+ Notice in each file and include the License files at
+ /cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the
+ License Header, with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+
+ If you wish your version of this file to be governed by only the CDDL
+ or only the GPL Version 3, indicate your decision by adding
+ "[Contributor] elects to include this software in this distribution
+ under the [CDDL or GPL Version 3] license." If you do not indicate a
+ single choice of license, a recipient has the option to distribute
+ your version of this file under either the CDDL, the GPL Version 3 or
+ to extend the choice of license to its licensees as provided above.
+ However, if you add GPL Version 3 code and therefore, elected the GPL
+ Version 3 license, then the option applies only if the new code is
+ made subject to such option by the copyright holder.
+
+ Contributor(s):
+
+ Portions Copyrighted 2011 Gephi Consortium.
*/
package org.gephi.datalab.plugin.manipulators.general;
@@ -56,14 +56,15 @@ Development and Distribution License("CDDL") (collectively, the
/**
* GeneralActionsManipulator that adds a new edge to the graph, asking for source and target nodes and type of edge in UI.
+ *
* @author Eduardo Ramos <eduramiba@gmail.com>
*/
@ServiceProvider(service = GeneralActionsManipulator.class)
public class AddEdgeToGraph implements GeneralActionsManipulator {
- private Node source=null, target=null;
+ private Node source = null, target = null;
private boolean directed;
- private GraphModel graphModel=null;
+ private GraphModel graphModel = null;
public void execute() {
if (source != null && target != null) {
@@ -84,10 +85,11 @@ public boolean canExecute() {
}
public ManipulatorUI getUI() {
- GraphModel currentGraphModel=Lookup.getDefault().lookup(GraphController.class).getModel();
- if(graphModel!=currentGraphModel){//If graph model has changed since last execution, change default mode for edges to create in UI, else keep this parameter across calls
- directed=currentGraphModel.isDirected()||currentGraphModel.isMixed();//Get graph directed state. Set to true if graph is directed or mixed
- graphModel=currentGraphModel;
+ GraphModel currentGraphModel = Lookup.getDefault().lookup(GraphController.class).getModel();
+ if (graphModel != currentGraphModel) {//If graph model has changed since last execution, change default mode for edges to create in UI, else keep this parameter across calls
+ directed = currentGraphModel.isDirected() || currentGraphModel.isMixed();//Get graph directed state. Set to true if graph is directed or mixed
+ graphModel = currentGraphModel;
+ source = null;
}
return new AddEdgeToGraphUI();
}
View
13 ...ataLaboratoryPlugin/src/main/java/org/gephi/datalab/plugin/manipulators/general/ui/AddEdgeToGraphUI.java
@@ -50,7 +50,6 @@ Development and Distribution License("CDDL") (collectively, the
import org.gephi.graph.api.Edge;
import org.gephi.graph.api.Graph;
import org.gephi.graph.api.GraphController;
-import org.gephi.graph.api.MixedGraph;
import org.gephi.graph.api.Node;
import org.openide.util.Lookup;
@@ -81,11 +80,23 @@ public void setup(Manipulator m, DialogControls dialogControls) {
} else {
undirectedRadioButton.setSelected(true);
}
+
graph = Lookup.getDefault().lookup(GraphController.class).getModel().getMixedGraph();
nodes = graph.getNodes().toArray();
+
for (Node n : nodes) {
sourceNodesComboBox.addItem(n.getId() + " - " + n.getNodeData().getLabel());
}
+
+ Node selectedSource = manipulator.getSource();
+ if(selectedSource != null){
+ for (int i = 0; i < nodes.length; i++) {
+ if(nodes[i] == selectedSource){
+ sourceNodesComboBox.setSelectedIndex(i);
+ }
+ }
+ }
+
refreshAvailableTargetNodes();
}
View
269 modules/DataLaboratoryPlugin/src/main/java/org/gephi/datalab/plugin/manipulators/nodes/LinkNodes.java
@@ -1,130 +1,139 @@
-/*
-Copyright 2008-2010 Gephi
-Authors : Eduardo Ramos <eduramiba@gmail.com>
-Website : http://www.gephi.org
-
-This file is part of Gephi.
-
-DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
-
-Copyright 2011 Gephi Consortium. All rights reserved.
-
-The contents of this file are subject to the terms of either the GNU
-General Public License Version 3 only ("GPL") or the Common
-Development and Distribution License("CDDL") (collectively, the
-"License"). You may not use this file except in compliance with the
-License. You can obtain a copy of the License at
-http://gephi.org/about/legal/license-notice/
-or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the
-specific language governing permissions and limitations under the
-License. When distributing the software, include this License Header
-Notice in each file and include the License files at
-/cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the
-License Header, with the fields enclosed by brackets [] replaced by
-your own identifying information:
-"Portions Copyrighted [year] [name of copyright owner]"
-
-If you wish your version of this file to be governed by only the CDDL
-or only the GPL Version 3, indicate your decision by adding
-"[Contributor] elects to include this software in this distribution
-under the [CDDL or GPL Version 3] license." If you do not indicate a
-single choice of license, a recipient has the option to distribute
-your version of this file under either the CDDL, the GPL Version 3 or
-to extend the choice of license to its licensees as provided above.
-However, if you add GPL Version 3 code and therefore, elected the GPL
-Version 3 license, then the option applies only if the new code is
-made subject to such option by the copyright holder.
-
-Contributor(s):
-
-Portions Copyrighted 2011 Gephi Consortium.
- */
-package org.gephi.datalab.plugin.manipulators.nodes;
-
-import javax.swing.Icon;
-import org.gephi.datalab.api.GraphElementsController;
-import org.gephi.datalab.plugin.manipulators.nodes.ui.LinkNodesUI;
-import org.gephi.datalab.spi.ManipulatorUI;
-import org.gephi.graph.api.GraphController;
-import org.gephi.graph.api.GraphModel;
-import org.gephi.graph.api.Node;
-import org.openide.util.ImageUtilities;
-import org.openide.util.Lookup;
-import org.openide.util.NbBundle;
-
-/**
- * Nodes manipulator that links at least 2 different nodes creating edges.
- * Asks the user to select a source node and whether to create directed or undirected edges.
- * It will create edges between the source node and all of the other nodes.
- * @author Eduardo Ramos <eduramiba@gmail.com>
- */
-public class LinkNodes extends BasicNodesManipulator{
- private Node[] nodes;
- private Node sourceNode;
- private static boolean directed;
- private static GraphModel graphModel;
-
- public void setup(Node[] nodes, Node clickedNode) {
- this.nodes=nodes;
- this.sourceNode=clickedNode;//Choose clicked node as source by default (but the user can select it or other one in the UI)
-
- GraphModel currentGraphModel=Lookup.getDefault().lookup(GraphController.class).getModel();
- if(graphModel!=currentGraphModel){//If graph model has changed since last execution, change default mode for edges to create in UI, else keep this parameter across calls
- directed=currentGraphModel.isDirected()||currentGraphModel.isMixed();//Get graph directed state. Set to true if graph is directed or mixed
- graphModel=currentGraphModel;
- }
- }
-
- public void execute() {
- GraphElementsController gec = Lookup.getDefault().lookup(GraphElementsController.class);
- gec.createEdges(sourceNode, nodes, directed);
- }
-
- public String getName() {
- return NbBundle.getMessage(LinkNodes.class, "LinkNodes.name");
- }
-
- public String getDescription() {
- return NbBundle.getMessage(LinkNodes.class, "LinkNodes.description");
- }
-
- public boolean canExecute() {
- return nodes.length>1;
- }
-
- public ManipulatorUI getUI() {
- return new LinkNodesUI();
- }
-
- public int getType() {
- return 500;
- }
-
- public int getPosition() {
- return 100;
- }
-
- public Icon getIcon() {
- return ImageUtilities.loadImageIcon("org/gephi/datalab/plugin/manipulators/resources/edge.png", true);
- }
-
- public Node[] getNodes() {
- return nodes;
- }
-
- public Node getSourceNode() {
- return sourceNode;
- }
-
- public void setSourceNode(Node sourceNode) {
- this.sourceNode = sourceNode;
- }
-
- public boolean isDirected() {
- return directed;
- }
-
- public void setDirected(boolean directed) {
- LinkNodes.directed = directed;
- }
-}
+/*
+ Copyright 2008-2010 Gephi
+ Authors : Eduardo Ramos <eduramiba@gmail.com>
+ Website : http://www.gephi.org
+
+ This file is part of Gephi.
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 2011 Gephi Consortium. All rights reserved.
+
+ The contents of this file are subject to the terms of either the GNU
+ General Public License Version 3 only ("GPL") or the Common
+ Development and Distribution License("CDDL") (collectively, the
+ "License"). You may not use this file except in compliance with the
+ License. You can obtain a copy of the License at
+ http://gephi.org/about/legal/license-notice/
+ or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the
+ specific language governing permissions and limitations under the
+ License. When distributing the software, include this License Header
+ Notice in each file and include the License files at
+ /cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the
+ License Header, with the fields enclosed by brackets [] replaced by
+ your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+
+ If you wish your version of this file to be governed by only the CDDL
+ or only the GPL Version 3, indicate your decision by adding
+ "[Contributor] elects to include this software in this distribution
+ under the [CDDL or GPL Version 3] license." If you do not indicate a
+ single choice of license, a recipient has the option to distribute
+ your version of this file under either the CDDL, the GPL Version 3 or
+ to extend the choice of license to its licensees as provided above.
+ However, if you add GPL Version 3 code and therefore, elected the GPL
+ Version 3 license, then the option applies only if the new code is
+ made subject to such option by the copyright holder.
+
+ Contributor(s):
+
+ Portions Copyrighted 2011 Gephi Consortium.
+ */
+package org.gephi.datalab.plugin.manipulators.nodes;
+
+import javax.swing.Icon;
+import org.gephi.datalab.api.DataLaboratoryHelper;
+import org.gephi.datalab.api.GraphElementsController;
+import org.gephi.datalab.plugin.manipulators.general.AddEdgeToGraph;
+import org.gephi.datalab.plugin.manipulators.nodes.ui.LinkNodesUI;
+import org.gephi.datalab.spi.ManipulatorUI;
+import org.gephi.graph.api.GraphController;
+import org.gephi.graph.api.GraphModel;
+import org.gephi.graph.api.Node;
+import org.openide.util.ImageUtilities;
+import org.openide.util.Lookup;
+import org.openide.util.NbBundle;
+
+/**
+ * Nodes manipulator that links at least 2 different nodes creating edges. Asks the user to select a source node and whether to create directed or undirected edges. It will create edges between the
+ * source node and all of the other nodes.
+ *
+ * @author Eduardo Ramos <eduramiba@gmail.com>
+ */
+public class LinkNodes extends BasicNodesManipulator {
+
+ private Node[] nodes;
+ private Node sourceNode;
+ private static boolean directed;
+ private static GraphModel graphModel;
+
+ public void setup(Node[] nodes, Node clickedNode) {
+ this.nodes = nodes;
+ this.sourceNode = clickedNode;//Choose clicked node as source by default (but the user can select it or other one in the UI)
+
+ GraphModel currentGraphModel = Lookup.getDefault().lookup(GraphController.class).getModel();
+ if (graphModel != currentGraphModel) {//If graph model has changed since last execution, change default mode for edges to create in UI, else keep this parameter across calls
+ directed = currentGraphModel.isDirected() || currentGraphModel.isMixed();//Get graph directed state. Set to true if graph is directed or mixed
+ graphModel = currentGraphModel;
+ }
+ }
+
+ public void execute() {
+ if (nodes.length > 1) {
+ GraphElementsController gec = Lookup.getDefault().lookup(GraphElementsController.class);
+ gec.createEdges(sourceNode, nodes, directed);
+ }else{
+ AddEdgeToGraph manipulator = new AddEdgeToGraph();
+ manipulator.setSource(sourceNode);
+ DataLaboratoryHelper.getDefault().executeManipulator(manipulator);
+ }
+ }
+
+ public String getName() {
+ return NbBundle.getMessage(LinkNodes.class, "LinkNodes.name");
+ }
+
+ public String getDescription() {
+ return NbBundle.getMessage(LinkNodes.class, "LinkNodes.description");
+ }
+
+ public boolean canExecute() {
+ return true;
+ }
+
+ public ManipulatorUI getUI() {
+ return nodes.length > 1 ? new LinkNodesUI() : null;//Use link nodes UI if more than one node selected, otherwise add edge to graph action will be called in execute.
+ }
+
+ public int getType() {
+ return 500;
+ }
+
+ public int getPosition() {
+ return 100;
+ }
+
+ public Icon getIcon() {
+ return ImageUtilities.loadImageIcon("org/gephi/datalab/plugin/manipulators/resources/edge.png", true);
+ }
+
+ public Node[] getNodes() {
+ return nodes;
+ }
+
+ public Node getSourceNode() {
+ return sourceNode;
+ }
+
+ public void setSourceNode(Node sourceNode) {
+ this.sourceNode = sourceNode;
+ }
+
+ public boolean isDirected() {
+ return directed;
+ }
+
+ public void setDirected(boolean directed) {
+ LinkNodes.directed = directed;
+ }
+}
Please sign in to comment.
Something went wrong with that request. Please try again.