/*
Copyright 2008-2010 Gephi
Authors : Eduardo Ramos <eduramiba@gmail.com>
Website : http://www.gephi.org
This file is part of Gephi.
Gephi is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
Gephi is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Gephi. If not, see <http://www.gnu.org/licenses/>.
*/
package org.gephi.datalab.plugin.manipulators.nodes.ui;
import javax.swing.JPanel;
import org.gephi.datalab.plugin.manipulators.nodes.LinkNodes;
import org.gephi.datalab.spi.DialogControls;
import org.gephi.datalab.spi.Manipulator;
import org.gephi.datalab.spi.ManipulatorUI;
import org.gephi.graph.api.Node;
/**
* UI for LinkNodes nodes manipulator.
* @author Eduardo Ramos <eduramiba@gmail.com>
*/
public class LinkNodesUI extends javax.swing.JPanel implements ManipulatorUI {
private LinkNodes manipulator;
private Node[] nodes;
/** Creates new form LinkNodesUI */
public LinkNodesUI() {
initComponents();
}
public void setup(Manipulator m, DialogControls dialogControls) {
manipulator = (LinkNodes) m;
nodes = manipulator.getNodes();
if(manipulator.isDirected()){
directedEdge.setSelected(true);
}else{
undirectedEdge.setSelected(true);
}
Node sourceNode = manipulator.getSourceNode();
//Prepare combo box with nodes data:
for (int i = 0; i < nodes.length; i++) {
sourceNodeComboBox.addItem(nodes[i].getId() + " - " + nodes[i].getNodeData().getLabel());
if (nodes[i] == sourceNode) {
sourceNodeComboBox.setSelectedIndex(i);
}
}
}
public void unSetup() {
manipulator.setSourceNode(nodes[sourceNodeComboBox.getSelectedIndex()]);
manipulator.setDirected(directedEdge.isSelected());
}
public String getDisplayName() {
return manipulator.getName();
}
public JPanel getSettingsPanel() {
return this;
}
public boolean isModal() {
return true;
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
edgeTypeButtonGroup = new javax.swing.ButtonGroup();
descriptionLabel = new javax.swing.JLabel();
directedEdge = new javax.swing.JRadioButton();
undirectedEdge = new javax.swing.JRadioButton();
sourceNodeComboBox = new javax.swing.JComboBox();
sourceNodeLabel = new javax.swing.JLabel();
edgeTypeLabel = new javax.swing.JLabel();
descriptionLabel.setText(org.openide.util.NbBundle.getMessage(LinkNodesUI.class, "LinkNodesUI.descriptionLabel.text")); // NOI18N
edgeTypeButtonGroup.add(directedEdge);
directedEdge.setText(org.openide.util.NbBundle.getMessage(LinkNodesUI.class, "LinkNodesUI.directedEdge.text")); // NOI18N
edgeTypeButtonGroup.add(undirectedEdge);
undirectedEdge.setText(org.openide.util.NbBundle.getMessage(LinkNodesUI.class, "LinkNodesUI.undirectedEdge.text")); // NOI18N
sourceNodeLabel.setText(org.openide.util.NbBundle.getMessage(LinkNodesUI.class, "LinkNodesUI.sourceNodeLabel.text")); // NOI18N
edgeTypeLabel.setText(org.openide.util.NbBundle.getMessage(LinkNodesUI.class, "LinkNodesUI.edgeTypeLabel.text")); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(descriptionLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 242, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(sourceNodeLabel)
.addComponent(edgeTypeLabel))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(directedEdge)
.addGap(18, 18, 18)
.addComponent(undirectedEdge))
.addComponent(sourceNodeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, 160, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(descriptionLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(5, 5, 5)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(sourceNodeLabel)
.addComponent(sourceNodeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(directedEdge, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(undirectedEdge)
.addComponent(edgeTypeLabel))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel descriptionLabel;
private javax.swing.JRadioButton directedEdge;
private javax.swing.ButtonGroup edgeTypeButtonGroup;
private javax.swing.JLabel edgeTypeLabel;
private javax.swing.JComboBox sourceNodeComboBox;
private javax.swing.JLabel sourceNodeLabel;
private javax.swing.JRadioButton undirectedEdge;
// End of variables declaration//GEN-END:variables
}