package cytoscape.editor.cyAnnotator.modifyAnnotations;
import java.awt.*;
import javax.swing.JFrame;
import cytoscape.Cytoscape;
import cytoscape.editor.cyAnnotator.Annotations.*;
import cytoscape.editor.cyAnnotator.createAnnotation.SelectColor;
public class mArrow extends javax.swing.JFrame {
public mArrow(TextAnnotation arrow) {
this.arrow=arrow;
initComponents();
}
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
sACButton = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
capList = new javax.swing.JList();
previewPanel = new PreviewPanel();
okButton = new javax.swing.JButton();
cancelButton = new javax.swing.JButton();
widthBox = new javax.swing.JComboBox();
preview=new TextAnnotation();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setTitle("Modify Arrow");
setAlwaysOnTop(true);
setResizable(false);
getContentPane().setLayout(null);
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel1.setText("Width:");
getContentPane().add(jLabel1);
jLabel1.setBounds(21, 24, 43, 15);
sACButton.setText("Select Arrow Color");
sACButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
sACButtonActionPerformed(evt);
}
});
getContentPane().add(sACButton);
sACButton.setBounds(210, 21, sACButton.getPreferredSize().width, 23);
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel2.setText("Cap:");
getContentPane().add(jLabel2);
jLabel2.setBounds(21, 88, 27, 15);
capList.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Butt", "Round", "Square" };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
capList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
int cap=arrow.getArrowStroke().getEndCap();
if(cap==BasicStroke.CAP_BUTT)
capList.setSelectedIndex(0);
else if(cap==BasicStroke.CAP_ROUND)
capList.setSelectedIndex(1);
else
capList.setSelectedIndex(2);
capList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
capListValueChanged(evt);
}
});
jScrollPane1.setViewportView(capList);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(94, 62, 80, 61);
previewPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Preview"));
previewPanel.setLayout(null);
getContentPane().add(previewPanel);
previewPanel.setBounds(210, 62, 140, 60);
okButton.setText("OK");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okButtonActionPerformed(evt);
}
});
getContentPane().add(okButton);
okButton.setBounds(170, 150, okButton.getPreferredSize().width, 23);
cancelButton.setText("Cancel");
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cancelButtonActionPerformed(evt);
}
});
getContentPane().add(cancelButton);
cancelButton.setBounds(250, 150, cancelButton.getPreferredSize().width, 23);
widthBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26" }));
widthBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
widthBoxActionPerformed(evt);
}
});
int aWidth=(int)arrow.getArrowStroke().getLineWidth();
if(aWidth<=0)
widthBox.setSelectedIndex(0);
else if(aWidth<27)
widthBox.setSelectedIndex(aWidth-1);
else
widthBox.setSelectedIndex(1);
getContentPane().add(widthBox);
widthBox.setBounds(96, 20, 80, 20);
preview.setArrowColor(arrow.getArrowColor());
x=(previewPanel.getWidth()-getLineWidth())/2;
y=previewPanel.getHeight()/2;
modifyPreview();
pack();
}
public int getLineWidth(){
return 80;
}
public void modifyPreview(){
previewPanel.repaint();
}
class PreviewPanel extends javax.swing.JPanel{
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2=(Graphics2D)g;
g2.setColor(preview.getArrowColor());
if(capList.getSelectedIndex()==0)
g2.setStroke( new BasicStroke( Float.parseFloat( (String)widthBox.getSelectedItem()), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND) );
else if(capList.getSelectedIndex()==1)
g2.setStroke( new BasicStroke( Float.parseFloat( (String)widthBox.getSelectedItem()), BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND) );
else if(capList.getSelectedIndex()==2)
g2.setStroke( new BasicStroke( Float.parseFloat( (String)widthBox.getSelectedItem()), BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND) );
g2.drawLine(mArrow.this.x, mArrow.this.y, mArrow.this.x+mArrow.this.getLineWidth(), mArrow.this.y);
}
}
private void widthBoxActionPerformed(java.awt.event.ActionEvent evt) {
modifyPreview();
}
private void sACButtonActionPerformed(java.awt.event.ActionEvent evt) {
SelectColor tASelectColor=new SelectColor(preview, 3, previewPanel, arrow.getArrowColor());
tASelectColor.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
tASelectColor.setVisible(true);
tASelectColor.setSize(435, 420);
}
private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {
if(capList.getSelectedIndex()==0)
arrow.setArrowStroke( new BasicStroke( Float.parseFloat( (String)widthBox.getSelectedItem()), BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND) );
else if(capList.getSelectedIndex()==1)
arrow.setArrowStroke( new BasicStroke( Float.parseFloat( (String)widthBox.getSelectedItem()), BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND) );
else if(capList.getSelectedIndex()==2)
arrow.setArrowStroke( new BasicStroke( Float.parseFloat( (String)widthBox.getSelectedItem()), BasicStroke.CAP_SQUARE, BasicStroke.JOIN_ROUND) );
arrow.setArrowColor(preview.getArrowColor());
dispose();
Cytoscape.getDesktop().getNetworkViewManager().getInternalFrameComponent(Cytoscape.getCurrentNetworkView()).repaint();
}
private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {
dispose();
}
private void capListValueChanged(javax.swing.event.ListSelectionEvent evt) {
modifyPreview();
}
private javax.swing.JButton cancelButton;
private javax.swing.JList capList;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton okButton;
private PreviewPanel previewPanel;
private javax.swing.JButton sACButton;
private javax.swing.JComboBox widthBox;
private int x=0, y=0;
private TextAnnotation arrow;
private TextAnnotation preview;
}