package cytoscape.editor.cyAnnotator.modifyAnnotations;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import cytoscape.editor.cyAnnotator.Annotations.TextAnnotation;
import cytoscape.editor.cyAnnotator.createAnnotation.SelectColor;
import java.awt.*;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
public class mTextAnnotationPanel extends javax.swing.JPanel {
public mTextAnnotationPanel(TextAnnotation annotation) {
this.mAnnotation=annotation;
initComponents();
}
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
fTField = new javax.swing.JTextField();
jLabel2 = new javax.swing.JLabel();
annotationText = new javax.swing.JTextField();
selectTextColorButton = new javax.swing.JButton();
fSizeField = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
fSField = new javax.swing.JTextField();
jScrollPane2 = new javax.swing.JScrollPane();
fontStyleList = new javax.swing.JList();
jScrollPane1 = new javax.swing.JScrollPane();
fontTypeList = new javax.swing.JList();
jScrollPane3 = new javax.swing.JScrollPane();
fontSizeList = new javax.swing.JList();
jPanel1 = new javax.swing.JPanel();
setMaximumSize(new java.awt.Dimension(470, 400));
setMinimumSize(new java.awt.Dimension(470, 400));
setLayout(null);
setBorder(BorderFactory.createLoweredBevelBorder());
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel1.setText("Enter Text:");
add(jLabel1);
jLabel1.setBounds(19, 22, jLabel1.getPreferredSize().width, 15);
fTField.setEditable(false);
fTField.setText(mAnnotation.getFont().getFamily());
add(fTField);
fTField.setBounds(19, 98, 128, 20);
jLabel2.setText("Font Type:");
add(jLabel2);
jLabel2.setBounds(19, 73, jLabel2.getPreferredSize().width, 14);
annotationText.setText(mAnnotation.getText());
add(annotationText);
annotationText.setBounds(113, 20, 145, 20);
selectTextColorButton.setText("Select Text Color");
add(selectTextColorButton);
selectTextColorButton.setBounds(306, 19, selectTextColorButton.getPreferredSize().width, 23);
jLabel4.setText("Size:");
add(jLabel4);
jLabel4.setBounds(358, 73, jLabel4.getPreferredSize().width, 14);
jLabel3.setText("Style:");
add(jLabel3);
jLabel3.setBounds(193, 73, jLabel3.getPreferredSize().width, 14);
fontStyleList.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "Plain", "Bold", "Italic", "Bold and Italic" };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
if(mAnnotation.getFont().getStyle()==Font.PLAIN)
fontStyleList.setSelectedIndex(0);
else if(mAnnotation.getFont().getStyle()==Font.BOLD)
fontStyleList.setSelectedIndex(1);
else if(mAnnotation.getFont().getStyle()==Font.ITALIC)
fontStyleList.setSelectedIndex(2);
else
fontStyleList.setSelectedIndex(3);
jScrollPane2.setViewportView(fontStyleList);
add(jScrollPane2);
jScrollPane2.setBounds(193, 136, 110, 130);
fSField.setEditable(false);
fSField.setText((String)fontStyleList.getSelectedValue());
add(fSField);
fSField.setBounds(193, 98, 110, 20);
fontTypeList.setModel(new javax.swing.AbstractListModel() {
String[] strings = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
for(int i=0;i<fontTypeList.getModel().getSize();i++){
if(mAnnotation.getFont().getFamily().equals((String)fontTypeList.getModel().getElementAt(i))){
fontTypeList.setSelectedIndex(i);
break;
}
}
jScrollPane1.setViewportView(fontTypeList);
add(jScrollPane1);
jScrollPane1.setBounds(19, 136, 128, 130);
fontSizeList.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "10", "12", "14", "16", "18", "20", "22", "24", "26", "28", "30", "32", "34", "36" };
public int getSize() { return strings.length; }
public Object getElementAt(int i) { return strings[i]; }
});
int fontSize=mAnnotation.getFont().getSize();
if(fontSize%2!=0)
fontSize++;
int i=0;
for(i=0;i<fontSizeList.getModel().getSize();i++){
if(fontSize==Integer.parseInt((String)fontSizeList.getModel().getElementAt(i)) ){
fontSizeList.setSelectedIndex(i);
break;
}
}
if(i==fontSizeList.getModel().getSize())
fontSizeList.setSelectedIndex(2);
jScrollPane3.setViewportView(fontSizeList);
add(jScrollPane3);
jScrollPane3.setBounds(358, 136, 90, 130);
fSizeField.setEditable(false);
fSizeField.setText((String)fontSizeList.getModel().getElementAt(fontSizeList.getSelectedIndex()));
add(fSizeField);
fSizeField.setBounds(358, 98, 90, 20);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Preview"));
jPanel1.setLayout(null);
add(jPanel1);
jPanel1.setBounds(19, 277, 430, 102);
preview=new TextAnnotation();
jPanel1.add(preview);
preview.setBounds(1, 1, jPanel1.getWidth(), jPanel1.getHeight());
preview.usedForPreviews=true;
iModifyTAPreview();
fontStyleList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
fontStyleListValueChanged(evt);
}
});
fontTypeList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
fontTypeListValueChanged(evt);
}
});
fontSizeList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
fontSizeListValueChanged(evt);
}
});
selectTextColorButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
selectTextColorButtonActionPerformed(evt);
}
});
annotationText.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
annotationTextActionPerformed(evt);
}
});
}
public String getText(){
return preview.getText();
}
public Color getTextColor(){
return preview.getTextColor();
}
public Font getNewFont(){
int fontStyle=0;
if(fSField.getText().equals("Plain"))
fontStyle=Font.PLAIN;
else if(fSField.getText().equals("Bold"))
fontStyle=Font.BOLD;
else if(fSField.getText().equals("Italic"))
fontStyle=Font.ITALIC;
else if(fSField.getText().equals("Bold and Italic"))
fontStyle=Font.ITALIC+Font.BOLD;
return new Font(fTField.getText(), fontStyle, Integer.parseInt(fSizeField.getText()) );
}
public void modifyTAPreview(){
preview.setFont(getNewFont());
preview.setText(annotationText.getText());
jPanel1.repaint();
}
public void iModifyTAPreview(){
preview.setFont(getNewFont());
preview.setText(annotationText.getText());
preview.setTextColor(mAnnotation.getTextColor());
jPanel1.repaint();
}
private void annotationTextActionPerformed(java.awt.event.ActionEvent evt) {
modifyTAPreview();
}
private void selectTextColorButtonActionPerformed(java.awt.event.ActionEvent evt) {
//Select Text Color
SelectColor tASelectColor=new SelectColor(preview, 0, this.jPanel1, mAnnotation.getTextColor());
tASelectColor.setVisible(true);
tASelectColor.setSize(435, 420);
}
private void fontStyleListValueChanged(javax.swing.event.ListSelectionEvent evt) {
//Plain, Bold, Italic.......
fSField.setText((String)fontStyleList.getModel().getElementAt(fontStyleList.getSelectedIndex()) );
modifyTAPreview();
}
private void fontTypeListValueChanged(javax.swing.event.ListSelectionEvent evt) {
//Font type
fTField.setText((String)fontTypeList.getModel().getElementAt(fontTypeList.getSelectedIndex()));
modifyTAPreview();
}
private void fontSizeListValueChanged(javax.swing.event.ListSelectionEvent evt) {
//Font Size
fSizeField.setText((String)fontSizeList.getModel().getElementAt(fontSizeList.getSelectedIndex()));
modifyTAPreview();
}
private javax.swing.JTextField annotationText;
private javax.swing.JTextField fSField;
private javax.swing.JTextField fSizeField;
private javax.swing.JTextField fTField;
private javax.swing.JList fontSizeList;
private javax.swing.JList fontStyleList;
private javax.swing.JList fontTypeList;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JButton selectTextColorButton;
private TextAnnotation preview;
private TextAnnotation mAnnotation;
}