/*
Copyright (c) 2008 The Regents of the University of California.
All rights reserved.
Permission is hereby granted, without written agreement and without
license or royalty fees, to use, copy, modify, and distribute this
software and its documentation for any purpose, provided that the above
copyright notice and the following two paragraphs appear in all copies
of this software.
IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY
FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
CALIFORNIA HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES,
ENHANCEMENTS, OR MODIFICATIONS..
*/
package org.clothocad.tool.sequenceview;
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.event.FocusEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import org.clothocore.util.dialog.ClothoDialogBox;
import javax.swing.JComponent;
import javax.swing.JOptionPane;
import javax.swing.JRootPane;
import javax.swing.text.*;
import org.clothocore.api.core.Collator;
import org.clothocore.api.core.Collector;
import org.clothocore.api.core.wrapper.ToolWrapper;
import org.clothocore.api.data.NucSeq;
import org.clothocore.util.basic.ImageSource;
/**
* Sequence view GUI
* @author Douglas Densmore
*/
public class SequenceViewGUI extends javax.swing.JFrame {
/** Creates new form SequenceView */
public SequenceViewGUI() {
initComponents();
}
public SequenceViewGUI(SequenceView sv) {
guiContentPane = null; //assign value later when needed, saves memory
guiRootPane = null;
_sv = sv;
_firstResize = 0;
_minWidth = 850;
_minHeight = 400;
initComponents();
SequenceViewAdjustmentListener listener1 = new SequenceViewAdjustmentListener(jScrollPane1, jScrollPane2, _sv, 1);
jScrollPane2.getVerticalScrollBar().addAdjustmentListener(listener1);
SequenceViewAdjustmentListener listener2 = new SequenceViewAdjustmentListener(jScrollPane1, jScrollPane2, _sv, 2);
jScrollPane1.getVerticalScrollBar().addAdjustmentListener(listener2);
SequenceViewDocumentListener listener3 = new SequenceViewDocumentListener(SequenceTextPane, _sv);
SequenceTextPane.getDocument().addDocumentListener(listener3);
SequenceTextPane.setSelectedTextColor(Color.WHITE);
SequenceTextPane.setSelectionColor(Color.GRAY);
jLabel30.setVisible(false);
setIconImage(ImageSource.getTinyLogo());
// Checks to see if data is saved before closing the window
_view = this;
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent we) {
if (!(_sv.getSaved())) {
ClothoDialogBox db = new ClothoDialogBox("Warning!", "Sequence View contains unsaved data! Close without saving?");
String[] options = {"Yes Close", "No", "Save", "Hide"};
int chosen = db.show_optionDialog(javax.swing.JOptionPane.YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.QUESTION_MESSAGE, options, options[2]);
if (chosen == javax.swing.JOptionPane.YES_OPTION) {
// No longer clears data on close, since windows can be
// re-opened after they are closed.
// _connection.updateClearedSequence();
SequenceTextPane.setText("");
setTitle("Clotho: Sequence View (Address: " + _sv.getIndex() + ") New Sequence");
CommentTextArea.setText("");
OutputTextArea.setText("");
_sv.updateWindowMenus();
//FIXME _sv.loadPart(new clothodata.ClothoPartsData());
_view.dispose();
} else if (chosen == javax.swing.JOptionPane.NO_OPTION) {
_view.requestFocus();
} else if (chosen == 2) {
_view.requestFocus();
_sv.saveSequence();
} else if (chosen == 3) {
_view.dispose();
}
} else {
_view.dispose();
}
}
});
// Sets a minimum size to avoid strange resizing errors
java.awt.Dimension minDimensions = new java.awt.Dimension(_minWidth, _minHeight);
this.setMinimumSize(minDimensions);
// Enables WordWrap in the two text areas
CommentTextArea.setLineWrap(true);
CommentTextArea.setWrapStyleWord(true);
OutputTextArea.setLineWrap(true);
OutputTextArea.setWrapStyleWord(true);
// Fixed width font for output
OutputTextArea.setFont(new java.awt.Font("Courier New", 0, 11));
// Sets colors in windows to avoid contrasts with the Look & Feel
CommentTextArea.setBackground(java.awt.Color.WHITE);
CommentTextArea.setForeground(java.awt.Color.BLACK);
CommentTextArea.setCaretColor(java.awt.Color.BLACK);
OutputTextArea.setBackground(java.awt.Color.WHITE);
OutputTextArea.setForeground(java.awt.Color.BLACK);
SequenceTextPane.setBackground(java.awt.Color.WHITE);
SequenceTextPane.setForeground(java.awt.Color.BLACK);
SequenceTextPane.setCaretColor(java.awt.Color.BLACK);
// Adds the SequenceView data transfer handler, to handle special drag and drop actions
//commented
// SequenceTextPane.setTransferHandler(new SequenceViewTransferHandler(_sv.getManager()));
// Adds a FocusListener to makes sure the row and column numbering on
// the SequenceView is correct whenever a sequence is loaded
addFocusListener(new java.awt.event.FocusAdapter() {
@Override
public void focusGained(FocusEvent e) {
_sv.configureBasePairBoth(columnCountJLabel);
}
});
}
public javax.swing.JCheckBox getCircularBox() {
return CircularCheckBox;
}
public javax.swing.JLabel getColLabel() {
return columnCountJLabel;
}
/**
* Return the CommentTextArea
* @return CommentTextArea
*/
public javax.swing.JTextArea getCommentTextArea() {
return CommentTextArea;
}
public javax.swing.JCheckBox getDegeneracyBox() {
return degeneracyCheckBox;
}
public javax.swing.JScrollPane getIndexScroll() {
return jScrollPane2;
}
public javax.swing.JCheckBox getLockedBox() {
return this.LockCheckBox;
}
public javax.swing.JCheckBox getMethylationBox() {
return MethCheckBox;
}
/**
* Return the OutputTextArea
* @return OutputTextArea
*/
public javax.swing.JTextArea getOutputTextArea() {
return OutputTextArea;
}
public javax.swing.JScrollPane getSeqScroll() {
return jScrollPane1;
}
public javax.swing.JLabel getSeqCountLabel() {
return SequenceLengthJLabel;
}
/**
* Reteruns the WindowMenu
* @return WindowMenu
*/
public javax.swing.JMenu getWindowMenu() {
return WindowMenu;
}
public javax.swing.JTextPane get_TextArea() {
return SequenceTextPane;
}
public void setIndexTextArea(String s) {
indexTextArea.setText(s);
}
/** 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() {
jPanel1 = new javax.swing.JPanel();
mainToolBar = new javax.swing.JToolBar();
revCompButton = new javax.swing.JButton();
transButton = new javax.swing.JButton();
revTransButton = new javax.swing.JButton();
uppperCaseButton = new javax.swing.JButton();
switchButton = new javax.swing.JButton();
lowerCaseButton = new javax.swing.JButton();
packageButton = new javax.swing.JButton();
featuresButton = new javax.swing.JButton();
resSiteButton = new javax.swing.JButton();
highlightButton = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
columnCountJLabel = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
jLabel10 = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
jLabel12 = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jLabel14 = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
jLabel16 = new javax.swing.JLabel();
jLabel17 = new javax.swing.JLabel();
jLabel18 = new javax.swing.JLabel();
jLabel19 = new javax.swing.JLabel();
SequenceLengthJLabel = new javax.swing.JLabel();
jLabel21 = new javax.swing.JLabel();
caretLocationJLabel = new javax.swing.JLabel();
jLabel23 = new javax.swing.JLabel();
jLabel24 = new javax.swing.JLabel();
jLabel25 = new javax.swing.JLabel();
jLabel9 = new javax.swing.JLabel();
jLabel26 = new javax.swing.JLabel();
jLabel27 = new javax.swing.JLabel();
jLabel28 = new javax.swing.JLabel();
mouseLocationJLabel = new javax.swing.JLabel();
jLabel30 = new javax.swing.JLabel();
featureNameJLabel = new javax.swing.JLabel();
degeneracyCheckBox = new javax.swing.JCheckBox();
CircularCheckBox = new javax.swing.JCheckBox();
MethCheckBox = new javax.swing.JCheckBox();
LockCheckBox = new javax.swing.JCheckBox();
jLabel20 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
SequenceTextPane = new javax.swing.JTextPane();
jScrollPane2 = new javax.swing.JScrollPane();
indexTextArea = new javax.swing.JTextArea();
jScrollPane3 = new javax.swing.JScrollPane();
CommentTextArea = new javax.swing.JTextArea();
jScrollPane4 = new javax.swing.JScrollPane();
OutputTextArea = new javax.swing.JTextArea();
jLabel33 = new javax.swing.JLabel();
jLabel32 = new javax.swing.JLabel();
SequenceViewMenuBar = new javax.swing.JMenuBar();
FileMenu = new javax.swing.JMenu();
OpenNewMenuItem = new javax.swing.JMenuItem();
jSeparator13 = new javax.swing.JSeparator();
LoadMenuItem = new javax.swing.JMenuItem();
SaveMenuItem = new javax.swing.JMenuItem();
createPartMenuItem = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JSeparator();
ExitMenuItem = new javax.swing.JMenuItem();
EditMenu = new javax.swing.JMenu();
undoMenuItem = new javax.swing.JMenuItem();
redoMenuItem = new javax.swing.JMenuItem();
jSeparator11 = new javax.swing.JSeparator();
cutMenuItem = new javax.swing.JMenuItem();
copyMenuItem = new javax.swing.JMenuItem();
pasteMenuItem = new javax.swing.JMenuItem();
jSeparator10 = new javax.swing.JSeparator();
revCutMenuItem = new javax.swing.JMenuItem();
revCopyMenuItem = new javax.swing.JMenuItem();
revPasteMenuItem = new javax.swing.JMenuItem();
jSeparator12 = new javax.swing.JSeparator();
findMenuItem = new javax.swing.JMenuItem();
moveOriginMenuItem = new javax.swing.JMenuItem();
ToolMenu = new javax.swing.JMenu();
ToolsMenuItem = new javax.swing.JMenuItem();
jSeparator17 = new javax.swing.JSeparator();
revCompMenuItem = new javax.swing.JMenuItem();
TranslateMenuItem = new javax.swing.JMenuItem();
revTranslateMenuItem = new javax.swing.JMenuItem();
primerMenuItem = new javax.swing.JMenuItem();
jSeparator14 = new javax.swing.JSeparator();
ORFMenu = new javax.swing.JMenu();
NextORFMenuItem = new javax.swing.JMenuItem();
PrevORFMenuItem = new javax.swing.JMenuItem();
jSeparator2 = new javax.swing.JSeparator();
RevNextORFMenuItem = new javax.swing.JMenuItem();
RevPrevORFMenuItem = new javax.swing.JMenuItem();
jSeparator3 = new javax.swing.JSeparator();
MapORFMenuItem = new javax.swing.JMenuItem();
HighlightMenu = new javax.swing.JMenu();
highlightSelectedMenuItem = new javax.swing.JMenuItem();
highlightFeaturesMenuItem = new javax.swing.JMenuItem();
highlightEnzMenuItem = new javax.swing.JMenuItem();
highlightFeaturesEnzymesMenuItem = new javax.swing.JMenuItem();
jSeparator6 = new javax.swing.JSeparator();
removeAllHighlightsMenuItem = new javax.swing.JMenuItem();
removeFeatureEnzymeHighlightMenuItem = new javax.swing.JMenuItem();
removeUserSelectedHighlightMenuItem = new javax.swing.JMenuItem();
jSeparator4 = new javax.swing.JSeparator();
editFeatureLibraryMenuItem = new javax.swing.JMenuItem();
jMenu1 = new javax.swing.JMenu();
importGenbankMenuItem = new javax.swing.JMenuItem();
importApEMenuItem = new javax.swing.JMenuItem();
preferenceMenuItem = new javax.swing.JMenuItem();
WindowMenu = new javax.swing.JMenu();
switchViewMenuItem = new javax.swing.JMenuItem();
HelpMenu = new javax.swing.JMenu();
helpMenuItem = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
setTitle("Clotho: Sequence View"); // NOI18N
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
frameResized(evt);
}
});
addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
formFocusGained(evt);
}
});
mainToolBar.setBorder(javax.swing.BorderFactory.createTitledBorder("Tools"));
mainToolBar.setFloatable(false);
revCompButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/clothocad/tool/sequenceview/images/icons/ReverseComplementIcon.png"))); // NOI18N
revCompButton.setMnemonic('R');
revCompButton.setToolTipText("Display Reverse Complement"); // NOI18N
revCompButton.setFocusable(false);
revCompButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
revCompButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
revCompButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
revCompButtonActionPerformed(evt);
}
});
mainToolBar.add(revCompButton);
transButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/clothocad/tool/sequenceview/images/icons/Translate.png"))); // NOI18N
transButton.setMnemonic('T');
transButton.setToolTipText("Translate"); // NOI18N
transButton.setFocusable(false);
transButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
transButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
transButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
transButtonActionPerformed(evt);
}
});
mainToolBar.add(transButton);
revTransButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/clothocad/tool/sequenceview/images/icons/TranslateReverse.png"))); // NOI18N
revTransButton.setToolTipText("Reverse-Complement Translate"); // NOI18N
revTransButton.setFocusable(false);
revTransButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
revTransButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
revTransButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
revTransButtonActionPerformed(evt);
}
});
mainToolBar.add(revTransButton);
uppperCaseButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/clothocad/tool/sequenceview/images/icons/ToUpperCase.png"))); // NOI18N
uppperCaseButton.setMnemonic('U');
uppperCaseButton.setToolTipText("UPPER CASE"); // NOI18N
uppperCaseButton.setFocusable(false);
uppperCaseButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
uppperCaseButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
uppperCaseButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
uppperCaseButtonActionPerformed(evt);
}
});
mainToolBar.add(uppperCaseButton);
switchButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/clothocad/tool/sequenceview/images/icons/ChangeCase.png"))); // NOI18N
switchButton.setMnemonic('S');
switchButton.setToolTipText("Switch Case"); // NOI18N
switchButton.setFocusable(false);
switchButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
switchButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
switchButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
switchButtonActionPerformed(evt);
}
});
mainToolBar.add(switchButton);
lowerCaseButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/clothocad/tool/sequenceview/images/icons/ToLowerCase.png"))); // NOI18N
lowerCaseButton.setMnemonic('l');
lowerCaseButton.setToolTipText("lower case"); // NOI18N
lowerCaseButton.setFocusable(false);
lowerCaseButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
lowerCaseButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
lowerCaseButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
lowerCaseButtonActionPerformed(evt);
}
});
mainToolBar.add(lowerCaseButton);
packageButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/clothocad/tool/sequenceview/images/icons/packagePartIcon16.png"))); // NOI18N
packageButton.setMnemonic('P');
packageButton.setToolTipText("Package as Clotho object: Associates it with a connection"); // NOI18N
packageButton.setFocusable(false);
packageButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
packageButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
packageButtonActionPerformed(evt);
}
});
mainToolBar.add(packageButton);
featuresButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/clothocad/tool/sequenceview/images/icons/HighlightFeatures.png"))); // NOI18N
featuresButton.setMnemonic('F');
featuresButton.setToolTipText("Highlight Features"); // NOI18N
featuresButton.setFocusable(false);
featuresButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
featuresButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
featuresButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
featuresButtonActionPerformed(evt);
}
});
mainToolBar.add(featuresButton);
resSiteButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/clothocad/tool/sequenceview/images/icons/HighlightRestrictionSites.png"))); // NOI18N
resSiteButton.setMnemonic('H');
resSiteButton.setToolTipText("Highlight Restriction Sites"); // NOI18N
resSiteButton.setFocusable(false);
resSiteButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
resSiteButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
resSiteButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
resSiteButtonActionPerformed(evt);
}
});
mainToolBar.add(resSiteButton);
highlightButton.setText("Highlight");
highlightButton.setToolTipText("Highlight selected sequence");
highlightButton.setFocusable(false);
highlightButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
highlightButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
highlightButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
highlightButtonActionPerformed(evt);
}
});
mainToolBar.add(highlightButton);
jButton1.setText("Clear All Highlighting");
jButton1.setToolTipText("Clear all highlighting");
jButton1.setFocusable(false);
jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
mainToolBar.add(jButton1);
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel1.setText("Location"); // NOI18N
columnCountJLabel.setText("ColLabel"); // NOI18N
jLabel3.setText("0"); // NOI18N
jLabel4.setText("0"); // NOI18N
jLabel5.setText("0"); // NOI18N
jLabel6.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel6.setText("Start"); // NOI18N
jLabel7.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel7.setText("Length"); // NOI18N
jLabel8.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel8.setText("End"); // NOI18N
jLabel10.setText("<"); // NOI18N
jLabel11.setText("0"); // NOI18N
jLabel12.setText(">"); // NOI18N
jLabel13.setText("<"); // NOI18N
jLabel14.setText("0"); // NOI18N
jLabel15.setText(">"); // NOI18N
jLabel16.setText("<"); // NOI18N
jLabel17.setText("0"); // NOI18N
jLabel18.setText(">"); // NOI18N
jLabel19.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel19.setText("Sequence"); // NOI18N
SequenceLengthJLabel.setText("0"); // NOI18N
jLabel21.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel21.setText("insert@"); // NOI18N
caretLocationJLabel.setText("0"); // NOI18N
jLabel23.setText("<"); // NOI18N
jLabel24.setText("0"); // NOI18N
jLabel25.setText(">"); // NOI18N
jLabel9.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel9.setText("%GC"); // NOI18N
jLabel9.setToolTipText("GC Content - Minimum (Maximum)"); // NOI18N
jLabel26.setText("0 (0)"); // NOI18N
jLabel26.setToolTipText("GC Content - Minimum (Maximum)"); // NOI18N
jLabel27.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel27.setText("Tm"); // NOI18N
jLabel27.setToolTipText("Oligo Annealing Temperature"); // NOI18N
jLabel28.setText("<0"); // NOI18N
jLabel28.setToolTipText("Oligo Annealing Temperature"); // NOI18N
mouseLocationJLabel.setText("0"); // NOI18N
jLabel30.setFont(new java.awt.Font("Tahoma", 1, 11));
jLabel30.setText("Feature"); // NOI18N
featureNameJLabel.setText(" "); // NOI18N
featureNameJLabel.setToolTipText(featureNameJLabel.getText());
degeneracyCheckBox.setText("Allow Degeneracy"); // NOI18N
degeneracyCheckBox.setToolTipText("Enables or disables the use of degenerate IUPAC codes"); // NOI18N
degeneracyCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
degeneracyCheckBoxItemStateChanged(evt);
}
});
CircularCheckBox.setText("Circular"); // NOI18N
CircularCheckBox.setToolTipText("If selected, the sequence will be treated like a plasmid"); // NOI18N
CircularCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
CircularStateChanged(evt);
}
});
CircularCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
CircularCheckBoxActionPerformed(evt);
}
});
MethCheckBox.setText("Dam/Dcm"); // NOI18N
MethCheckBox.setToolTipText("Enables or disables methylation of the sequence"); // NOI18N
MethCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
MethCheckBoxItemStateChanged(evt);
}
});
LockCheckBox.setText("Locked"); // NOI18N
LockCheckBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
LockCheckBoxItemStateChanged(evt);
}
});
LockCheckBox.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
LockCheckBoxActionPerformed(evt);
}
});
jLabel20.setText("Columns: ");
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addContainerGap(1336, Short.MAX_VALUE)
.addComponent(jLabel20)
.addGap(64, 64, 64))
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(LockCheckBox, javax.swing.GroupLayout.DEFAULT_SIZE, 277, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(SequenceLengthJLabel)
.addComponent(jLabel19))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(caretLocationJLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel23)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel24)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel25, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel2Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel21, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(mouseLocationJLabel)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel3)
.addGap(6, 6, 6)
.addComponent(jLabel10)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel11)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel12))
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel13)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel14)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel15))
.addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel16)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel17)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel18)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel9)
.addComponent(jLabel26, javax.swing.GroupLayout.PREFERRED_SIZE, 49, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel28)
.addComponent(jLabel27, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel30)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 441, Short.MAX_VALUE)
.addComponent(degeneracyCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(MethCheckBox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(CircularCheckBox))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(featureNameJLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 682, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(columnCountJLabel)))
.addContainerGap()))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
.addContainerGap(40, Short.MAX_VALUE)
.addComponent(jLabel20)
.addGap(22, 22, 22))
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(LockCheckBox)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(2, 2, 2)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel21)
.addGap(4, 4, 4)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(caretLocationJLabel)
.addComponent(jLabel23)
.addComponent(jLabel24)
.addComponent(jLabel25)))
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel6)
.addGap(4, 4, 4)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel12)
.addComponent(jLabel11)
.addComponent(jLabel10)
.addComponent(jLabel3)))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel1)
.addGap(4, 4, 4)
.addComponent(mouseLocationJLabel))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel7)
.addGap(4, 4, 4)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel15)
.addComponent(jLabel14)
.addComponent(jLabel13)
.addComponent(jLabel4)))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel8)
.addGap(4, 4, 4)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(jLabel16)
.addComponent(jLabel17)
.addComponent(jLabel18)))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel27)
.addComponent(jLabel9)
.addComponent(jLabel30))
.addGap(4, 4, 4)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel28)
.addComponent(featureNameJLabel)
.addComponent(jLabel26)))))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabel19)
.addGap(4, 4, 4)
.addComponent(SequenceLengthJLabel)))))
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(CircularCheckBox)
.addComponent(MethCheckBox)
.addComponent(degeneracyCheckBox))
.addGap(4, 4, 4)
.addComponent(columnCountJLabel)))
.addContainerGap(28, Short.MAX_VALUE)))
);
SequenceTextPane.setFont(new java.awt.Font("Courier New", 0, 11));
SequenceTextPane.setDragEnabled(true);
SequenceTextPane.setMargin(new java.awt.Insets(0, 0, 0, 0));
SequenceTextPane.addCaretListener(new javax.swing.event.CaretListener() {
public void caretUpdate(javax.swing.event.CaretEvent evt) {
SequenceViewGUI.this.caretUpdate(evt);
}
});
SequenceTextPane.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
SequenceViewGUI.this.mouseDragged(evt);
}
public void mouseMoved(java.awt.event.MouseEvent evt) {
mouseMovedinTextPane(evt);
}
});
SequenceTextPane.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
textPaneFocusGained(evt);
}
});
SequenceTextPane.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
SequenceTextPaneKeyPressed(evt);
}
public void keyReleased(java.awt.event.KeyEvent evt) {
keyReleasedJTextPane(evt);
}
public void keyTyped(java.awt.event.KeyEvent evt) {
SequenceViewGUI.this.keyTyped(evt);
}
});
jScrollPane1.setViewportView(SequenceTextPane);
jScrollPane2.setBorder(null);
jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
jScrollPane2.setOpaque(false);
indexTextArea.setBackground(new java.awt.Color(236, 233, 216));
indexTextArea.setColumns(20);
indexTextArea.setEditable(false);
indexTextArea.setFont(new java.awt.Font("Courier New", 0, 11));
indexTextArea.setRows(5);
indexTextArea.setToolTipText("Base Pair Line Index"); // NOI18N
indexTextArea.setBorder(javax.swing.BorderFactory.createEtchedBorder(java.awt.Color.white, java.awt.Color.white));
indexTextArea.setOpaque(false);
indexTextArea.setVerifyInputWhenFocusTarget(false);
jScrollPane2.setViewportView(indexTextArea);
indexTextArea.getAccessibleContext().setAccessibleParent(jScrollPane2);
CommentTextArea.setColumns(20);
CommentTextArea.setRows(5);
jScrollPane3.setViewportView(CommentTextArea);
OutputTextArea.setColumns(20);
OutputTextArea.setEditable(false);
OutputTextArea.setRows(5);
jScrollPane4.setViewportView(OutputTextArea);
jLabel33.setText("Output Data"); // NOI18N
jLabel32.setText("Sequence Comments"); // NOI18N
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(28, 28, 28)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 1326, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGap(19, 19, 19)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 729, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel32, javax.swing.GroupLayout.PREFERRED_SIZE, 424, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(32, 32, 32)))
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel33, javax.swing.GroupLayout.DEFAULT_SIZE, 616, Short.MAX_VALUE)
.addGap(83, 83, 83))
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 699, Short.MAX_VALUE)))
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(mainToolBar, javax.swing.GroupLayout.DEFAULT_SIZE, 1447, Short.MAX_VALUE))))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(mainToolBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 350, Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 350, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel33)
.addComponent(jLabel32, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE)
.addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 109, Short.MAX_VALUE))
.addContainerGap())
);
FileMenu.setText("File"); // NOI18N
OpenNewMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_N, java.awt.event.InputEvent.CTRL_MASK));
OpenNewMenuItem.setText("New Sequence View Window"); // NOI18N
OpenNewMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
OpenNewMenuItemActionPerformed(evt);
}
});
FileMenu.add(OpenNewMenuItem);
FileMenu.add(jSeparator13);
LoadMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_L, java.awt.event.InputEvent.CTRL_MASK));
LoadMenuItem.setText("Load Sequence File"); // NOI18N
LoadMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
LoadMenuItemActionPerformed(evt);
}
});
FileMenu.add(LoadMenuItem);
SaveMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
SaveMenuItem.setText("Save Sequence File ");
SaveMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
SaveMenuItemActionPerformed(evt);
}
});
FileMenu.add(SaveMenuItem);
createPartMenuItem.setText("Create New Clotho Object"); // NOI18N
createPartMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
createPartMenuItemActionPerformed(evt);
}
});
FileMenu.add(createPartMenuItem);
FileMenu.add(jSeparator1);
ExitMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
ExitMenuItem.setText("Close Window");
ExitMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ExitMenuItemActionPerformed1(evt);
}
});
FileMenu.add(ExitMenuItem);
SequenceViewMenuBar.add(FileMenu);
EditMenu.setText("Edit"); // NOI18N
EditMenu.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
EditMenuActionPerformed(evt);
}
});
undoMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Z, java.awt.event.InputEvent.CTRL_MASK));
undoMenuItem.setText("Undo");
undoMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
undoMenuItemActionPerformed(evt);
}
});
EditMenu.add(undoMenuItem);
redoMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Y, java.awt.event.InputEvent.CTRL_MASK));
redoMenuItem.setText("Redo");
redoMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
redoMenuItemActionPerformed(evt);
}
});
EditMenu.add(redoMenuItem);
EditMenu.add(jSeparator11);
cutMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK));
cutMenuItem.setText("Cut"); // NOI18N
cutMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cutMenuItemActionPerformed(evt);
}
});
EditMenu.add(cutMenuItem);
copyMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.CTRL_MASK));
copyMenuItem.setText("Copy"); // NOI18N
copyMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
copyMenuItemActionPerformed(evt);
}
});
EditMenu.add(copyMenuItem);
pasteMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.CTRL_MASK));
pasteMenuItem.setText("Paste"); // NOI18N
pasteMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
pasteMenuItemActionPerformed(evt);
}
});
EditMenu.add(pasteMenuItem);
EditMenu.add(jSeparator10);
revCutMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
revCutMenuItem.setText("Cut (Reverse Complement)"); // NOI18N
revCutMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
revCutMenuItemActionPerformed(evt);
}
});
EditMenu.add(revCutMenuItem);
revCopyMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
revCopyMenuItem.setText("Copy (Reverse Complement)"); // NOI18N
revCopyMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
revCopyMenuItemActionPerformed(evt);
}
});
EditMenu.add(revCopyMenuItem);
revPasteMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_V, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
revPasteMenuItem.setText("Paste (Reverse Complement)"); // NOI18N
revPasteMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
revPasteMenuItemActionPerformed(evt);
}
});
EditMenu.add(revPasteMenuItem);
EditMenu.add(jSeparator12);
findMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK));
findMenuItem.setText("Find"); // NOI18N
findMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
findMenuItemActionPerformed(evt);
}
});
EditMenu.add(findMenuItem);
moveOriginMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_I, java.awt.event.InputEvent.CTRL_MASK));
moveOriginMenuItem.setText("Move Origin to Cursor"); // NOI18N
moveOriginMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
moveOriginMenuItemActionPerformed(evt);
}
});
EditMenu.add(moveOriginMenuItem);
SequenceViewMenuBar.add(EditMenu);
ToolMenu.setText("Tools"); // NOI18N
ToolsMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F, java.awt.event.InputEvent.CTRL_MASK));
ToolsMenuItem.setText("Search Tools"); // NOI18N
ToolsMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ToolsMenuItemActionPerformed(evt);
}
});
ToolMenu.add(ToolsMenuItem);
ToolMenu.add(jSeparator17);
revCompMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SLASH, java.awt.event.InputEvent.CTRL_MASK));
revCompMenuItem.setText("Reverse Complement"); // NOI18N
revCompMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
revCompMenuItemActionPerformed1(evt);
}
});
ToolMenu.add(revCompMenuItem);
TranslateMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.CTRL_MASK));
TranslateMenuItem.setText("Translate"); // NOI18N
TranslateMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
TranslateMenuItemActionPerformed(evt);
}
});
ToolMenu.add(TranslateMenuItem);
revTranslateMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
revTranslateMenuItem.setText("Translate Reverse"); // NOI18N
revTranslateMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
revTranslateMenuItemActionPerformed(evt);
}
});
ToolMenu.add(revTranslateMenuItem);
primerMenuItem.setText("Create Primers");
primerMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
primerMenuItemActionPerformed(evt);
}
});
ToolMenu.add(primerMenuItem);
ToolMenu.add(jSeparator14);
SequenceViewMenuBar.add(ToolMenu);
ORFMenu.setText("ORFs"); // NOI18N
NextORFMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_PERIOD, java.awt.event.InputEvent.CTRL_MASK));
NextORFMenuItem.setText("Find Next ORF"); // NOI18N
NextORFMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
NextORFMenuItemActionPerformed(evt);
}
});
ORFMenu.add(NextORFMenuItem);
PrevORFMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_COMMA, java.awt.event.InputEvent.CTRL_MASK));
PrevORFMenuItem.setText("Find Previous ORF"); // NOI18N
PrevORFMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
PrevORFMenuItemActionPerformed(evt);
}
});
ORFMenu.add(PrevORFMenuItem);
ORFMenu.add(jSeparator2);
RevNextORFMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_PERIOD, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
RevNextORFMenuItem.setText("Find Next Reverse ORF"); // NOI18N
RevNextORFMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
RevNextORFMenuItemActionPerformed(evt);
}
});
ORFMenu.add(RevNextORFMenuItem);
RevPrevORFMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_COMMA, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
RevPrevORFMenuItem.setText("Find Previous Reverse ORF"); // NOI18N
RevPrevORFMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
RevPrevORFMenuItemActionPerformed(evt);
}
});
ORFMenu.add(RevPrevORFMenuItem);
ORFMenu.add(jSeparator3);
MapORFMenuItem.setText("Display ORF Map"); // NOI18N
MapORFMenuItem.setEnabled(false);
MapORFMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
MapORFMenuItemActionPerformed(evt);
}
});
ORFMenu.add(MapORFMenuItem);
SequenceViewMenuBar.add(ORFMenu);
HighlightMenu.setText("Highlighting");
HighlightMenu.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
HighlightMenuActionPerformed(evt);
}
});
highlightSelectedMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_1, java.awt.event.InputEvent.CTRL_MASK));
highlightSelectedMenuItem.setText("Highlight Selected");
highlightSelectedMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
highlightSelectedMenuItemActionPerformed(evt);
}
});
HighlightMenu.add(highlightSelectedMenuItem);
highlightFeaturesMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_K, java.awt.event.InputEvent.CTRL_MASK));
highlightFeaturesMenuItem.setText("Highlight Features"); // NOI18N
highlightFeaturesMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
highlightFeaturesMenuItemActionPerformed(evt);
}
});
HighlightMenu.add(highlightFeaturesMenuItem);
highlightEnzMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK));
highlightEnzMenuItem.setText("Highlight Restriction Sites"); // NOI18N
highlightEnzMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
highlightEnzMenuItemActionPerformed(evt);
}
});
HighlightMenu.add(highlightEnzMenuItem);
highlightFeaturesEnzymesMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_K, java.awt.event.InputEvent.ALT_MASK | java.awt.event.InputEvent.CTRL_MASK));
highlightFeaturesEnzymesMenuItem.setText("Highlight Features/Enzymes"); // NOI18N
highlightFeaturesEnzymesMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
highlightFeaturesEnzymesMenuItemActionPerformed(evt);
}
});
HighlightMenu.add(highlightFeaturesEnzymesMenuItem);
HighlightMenu.add(jSeparator6);
removeAllHighlightsMenuItem.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_K, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
removeAllHighlightsMenuItem.setText("Remove All Highlights"); // NOI18N
removeAllHighlightsMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeAllHighlightsMenuItemActionPerformed(evt);
}
});
HighlightMenu.add(removeAllHighlightsMenuItem);
removeFeatureEnzymeHighlightMenuItem.setText("Remove Features/Enzymes Highlights"); // NOI18N
removeFeatureEnzymeHighlightMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeFeatureEnzymeHighlightMenuItemActionPerformed(evt);
}
});
HighlightMenu.add(removeFeatureEnzymeHighlightMenuItem);
removeUserSelectedHighlightMenuItem.setText("Remove User-Selected Highlights"); // NOI18N
removeUserSelectedHighlightMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
removeUserSelectedHighlightMenuItemActionPerformed(evt);
}
});
HighlightMenu.add(removeUserSelectedHighlightMenuItem);
HighlightMenu.add(jSeparator4);
editFeatureLibraryMenuItem.setText("Open Feature/Enzyme Library");
editFeatureLibraryMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editFeatureLibraryMenuItemActionPerformed(evt);
}
});
HighlightMenu.add(editFeatureLibraryMenuItem);
jMenu1.setText("Import Features");
importGenbankMenuItem.setText("Import Genbank Features");
importGenbankMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
importGenbankMenuItemActionPerformed(evt);
}
});
jMenu1.add(importGenbankMenuItem);
importApEMenuItem.setText("Import ApE Features");
importApEMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
importApEMenuItemActionPerformed(evt);
}
});
jMenu1.add(importApEMenuItem);
HighlightMenu.add(jMenu1);
preferenceMenuItem.setText("Preferences"); // NOI18N
preferenceMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
preferenceMenuItemActionPerformed(evt);
}
});
HighlightMenu.add(preferenceMenuItem);
SequenceViewMenuBar.add(HighlightMenu);
WindowMenu.setText("Windows"); // NOI18N
WindowMenu.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
WindowMenuActionPerformed(evt);
}
});
switchViewMenuItem.setText("Switch View");
switchViewMenuItem.setToolTipText("Switch between top component view and frame view");
switchViewMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
switchViewMenuItemActionPerformed(evt);
}
});
WindowMenu.add(switchViewMenuItem);
SequenceViewMenuBar.add(WindowMenu);
HelpMenu.setText("Help");
helpMenuItem.setText("Help"); // NOI18N
helpMenuItem.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
helpMenuItemActionPerformed(evt);
}
});
HelpMenu.add(helpMenuItem);
SequenceViewMenuBar.add(HelpMenu);
setJMenuBar(SequenceViewMenuBar);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(20, 20, 20))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void CircularStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_CircularStateChanged
_sv.update_circular();
}//GEN-LAST:event_CircularStateChanged
private void keyTyped(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_keyTyped
_sv.validateKeyTyped(evt);
}//GEN-LAST:event_keyTyped
private void frameResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_frameResized
if (_firstResize >= 2) {
_sv.configureBasePairBoth(columnCountJLabel);
} else {
_firstResize++;
}
}//GEN-LAST:event_frameResized
private void caretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_caretUpdate
_sv.processCaret(evt,
jLabel6, jLabel3, jLabel11, jLabel10, jLabel12,
jLabel7, jLabel4, jLabel14, jLabel13, jLabel15,
jLabel8, jLabel5, jLabel17, jLabel16, jLabel18,
jLabel21, caretLocationJLabel, jLabel24, jLabel23, jLabel25,
jLabel9, jLabel26, jLabel27, jLabel28);
}//GEN-LAST:event_caretUpdate
private void mouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mouseDragged
_sv.processMouseHighlight(evt, SequenceTextPane,
jLabel6, jLabel3, jLabel11, jLabel10, jLabel12,
jLabel7, jLabel4, jLabel14, jLabel13, jLabel15,
jLabel8, jLabel5, jLabel17, jLabel16, jLabel18,
jLabel21, caretLocationJLabel, jLabel24, jLabel23, jLabel25,
jLabel9, jLabel26, jLabel27, jLabel28);
}//GEN-LAST:event_mouseDragged
private void revCompButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_revCompButtonActionPerformed
_sv.processSearchToolAction(evt, "Reverse Complement");
}//GEN-LAST:event_revCompButtonActionPerformed
private void transButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_transButtonActionPerformed
_sv.processSearchToolAction(evt, "Translation");
}//GEN-LAST:event_transButtonActionPerformed
private void switchButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_switchButtonActionPerformed
_sv.processSearchToolAction(evt, "Switch Case");
}//GEN-LAST:event_switchButtonActionPerformed
private void resSiteButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resSiteButtonActionPerformed
_sv.highlightRestrictionSites();
}//GEN-LAST:event_resSiteButtonActionPerformed
private void keyReleasedJTextPane(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_keyReleasedJTextPane
//this function is here as well as keyTyped since key typed seems to count string length
//in textPane before the key is release i.e. it does not count the latest addition
_sv.validateKeyReleased(evt);
_sv.updateSequenceCount(SequenceLengthJLabel);
}//GEN-LAST:event_keyReleasedJTextPane
private void LoadMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_LoadMenuItemActionPerformed
_sv.loadSequence();
}//GEN-LAST:event_LoadMenuItemActionPerformed
private void SaveMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_SaveMenuItemActionPerformed
_sv.saveSequence();
}//GEN-LAST:event_SaveMenuItemActionPerformed
private void ExitMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ExitMenuItemActionPerformed
if (!(_sv.getSaved())) {
// ClothoDialogBox db = new ClothoDialogBox("Warning!", "Sequence View contains unsaved data! Close without saving?");
String[] options = {"Yes Close", "No", "Save", "Hide"};
// int chosen = db.show_optionDialog(javax.swing.JOptionPane.YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.QUESTION_MESSAGE, options, options[2]);
int chosen = javax.swing.JOptionPane.showOptionDialog(
null,
"Sequence View contains unsaved data! Close without saving?",
"Warning!",
javax.swing.JOptionPane.YES_NO_CANCEL_OPTION,
javax.swing.JOptionPane.QUESTION_MESSAGE,
null,
options,
options[2]);//FIXME replace with ClothoDialogBox
if (chosen == javax.swing.JOptionPane.YES_OPTION) {
// No longer clears data on close, since windows can be
// re-opened after they are closed.
// _connection.updateClearedSequence();
SequenceTextPane.setText("");
setTitle("Clotho: Sequence View (Address: " + _sv.getIndex() + ") New Sequence");
CommentTextArea.setText("");
OutputTextArea.setText("");
_sv.updateWindowMenus();
//FIXME _sv.loadPart(new clothodata.ClothoPartsData());
if (_sv.getIsTC()) {
_sv.getTCView().close();
}
this.dispose();
} else if (chosen == javax.swing.JOptionPane.NO_OPTION) {
this.requestFocus();
} else if (chosen == 2) {
this.requestFocus();
_sv.saveSequence();
} else if (chosen == 3) {
if (_sv.getIsTC()) {
_sv.getTCView().close();
}
this.dispose();
}
} else {
if (_sv.getIsTC()) {
_sv.getTCView().close();
}
this.dispose();
}
}//GEN-LAST:event_ExitMenuItemActionPerformed
private void OpenNewMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_OpenNewMenuItemActionPerformed
// _sv.createNewWindow();
_sv.createNewTab();
}//GEN-LAST:event_OpenNewMenuItemActionPerformed
private void ToolsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ToolsMenuItemActionPerformed
_sv.show_tools();
}//GEN-LAST:event_ToolsMenuItemActionPerformed
private void TranslateMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_TranslateMenuItemActionPerformed
_sv.processSearchToolAction(evt, "Translation");
}//GEN-LAST:event_TranslateMenuItemActionPerformed
private void NextORFMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_NextORFMenuItemActionPerformed
_sv.findNextORF();
}//GEN-LAST:event_NextORFMenuItemActionPerformed
private void PrevORFMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PrevORFMenuItemActionPerformed
_sv.findPrevORF();
}//GEN-LAST:event_PrevORFMenuItemActionPerformed
private void MapORFMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_MapORFMenuItemActionPerformed
_sv.displayORFs();
}//GEN-LAST:event_MapORFMenuItemActionPerformed
private void mouseMovedinTextPane(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mouseMovedinTextPane
_sv.processMouseMoved(evt, mouseLocationJLabel, featureNameJLabel, jLabel30);
}//GEN-LAST:event_mouseMovedinTextPane
private void packageButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_packageButtonActionPerformed
//_connection.packagePartOpen();
if (SequenceTextPane.getText().isEmpty()) {
ClothoDialogBox db = new ClothoDialogBox("Error", "No sequence data to package");
db.show_Dialog(javax.swing.JOptionPane.ERROR_MESSAGE);
} else {
_sv.createPart();
}
}//GEN-LAST:event_packageButtonActionPerformed
private void RevNextORFMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_RevNextORFMenuItemActionPerformed
_sv.findNextRevORF();
}//GEN-LAST:event_RevNextORFMenuItemActionPerformed
private void RevPrevORFMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_RevPrevORFMenuItemActionPerformed
_sv.findPrevRevORF();
}//GEN-LAST:event_RevPrevORFMenuItemActionPerformed
private void uppperCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_uppperCaseButtonActionPerformed
_sv.changeCase(true);
}//GEN-LAST:event_uppperCaseButtonActionPerformed
private void lowerCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_lowerCaseButtonActionPerformed
_sv.changeCase(false);
}//GEN-LAST:event_lowerCaseButtonActionPerformed
private void LockCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_LockCheckBoxItemStateChanged
_sv.update_lock(evt);
}//GEN-LAST:event_LockCheckBoxItemStateChanged
private void highlightFeaturesEnzymesMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_highlightFeaturesEnzymesMenuItemActionPerformed
_sv.resetHighlight(SequenceTextPane);
_sv.highlightRestrictionSites();
_sv.highlightFeatures();
}//GEN-LAST:event_highlightFeaturesEnzymesMenuItemActionPerformed
private void highlightFeaturesMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_highlightFeaturesMenuItemActionPerformed
_sv.highlightFeatures();
}//GEN-LAST:event_highlightFeaturesMenuItemActionPerformed
private void highlightEnzMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_highlightEnzMenuItemActionPerformed
_sv.highlightRestrictionSites();
}//GEN-LAST:event_highlightEnzMenuItemActionPerformed
private void MethCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_MethCheckBoxItemStateChanged
_sv.update_methylated(evt);
}//GEN-LAST:event_MethCheckBoxItemStateChanged
private void SequenceTextPaneKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_SequenceTextPaneKeyPressed
_sv.validateKeyPressed(evt);
}//GEN-LAST:event_SequenceTextPaneKeyPressed
private void degeneracyCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_degeneracyCheckBoxItemStateChanged
_sv.update_AllowDegeneracy(evt);
}//GEN-LAST:event_degeneracyCheckBoxItemStateChanged
private void revTransButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_revTransButtonActionPerformed
_sv.processSearchToolAction(evt, "Reverse Translation");
}//GEN-LAST:event_revTransButtonActionPerformed
private void removeAllHighlightsMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeAllHighlightsMenuItemActionPerformed
_sv.resetHighlight(SequenceTextPane);
// _sv.get_highlightData().clear();
}//GEN-LAST:event_removeAllHighlightsMenuItemActionPerformed
private void findMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_findMenuItemActionPerformed
_sv.show_tools();
}//GEN-LAST:event_findMenuItemActionPerformed
private void moveOriginMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_moveOriginMenuItemActionPerformed
_sv.moveOrigin();
}//GEN-LAST:event_moveOriginMenuItemActionPerformed
private void formFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_formFocusGained
_sv.setToMainSeqView();
}//GEN-LAST:event_formFocusGained
private void textPaneFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_textPaneFocusGained
_sv.setToMainSeqView();
}//GEN-LAST:event_textPaneFocusGained
private void removeFeatureEnzymeHighlightMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeFeatureEnzymeHighlightMenuItemActionPerformed
_sv.removeFeatureEnzymeHighlights();
// _sv.get_highlightData().clear();
}//GEN-LAST:event_removeFeatureEnzymeHighlightMenuItemActionPerformed
private void removeUserSelectedHighlightMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeUserSelectedHighlightMenuItemActionPerformed
_sv.removeUserSelectedHighlights();
}//GEN-LAST:event_removeUserSelectedHighlightMenuItemActionPerformed
private void revTranslateMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_revTranslateMenuItemActionPerformed
_sv.processSearchToolAction(evt, "Reverse Translation");
}//GEN-LAST:event_revTranslateMenuItemActionPerformed
private void cutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cutMenuItemActionPerformed
// SequenceTextPane.cut();
StringSelection ss = new StringSelection(SequenceTextPane.getSelectedText());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
SequenceTextPane.replaceSelection("");
}//GEN-LAST:event_cutMenuItemActionPerformed
private void revCompMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_revCompMenuItemActionPerformed
_sv.processSearchToolAction(evt, "Reverse Complement");
}//GEN-LAST:event_revCompMenuItemActionPerformed
private void copyMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_copyMenuItemActionPerformed
// SequenceTextPane.copy();
StringSelection ss = new StringSelection(SequenceTextPane.getSelectedText());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
}//GEN-LAST:event_copyMenuItemActionPerformed
private void pasteMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pasteMenuItemActionPerformed
// SequenceTextPane.paste();
String newSeq = null;
java.awt.datatransfer.Transferable t = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard().getContents(null);
try {
if (t != null && t.isDataFlavorSupported(java.awt.datatransfer.DataFlavor.stringFlavor)) {
newSeq = (String) t.getTransferData(java.awt.datatransfer.DataFlavor.stringFlavor);
SequenceTextPane.replaceSelection(newSeq);
}
} catch (java.awt.datatransfer.UnsupportedFlavorException e) {
} catch (java.io.IOException e) {
}
if ((newSeq == null) || (newSeq.equalsIgnoreCase(""))) {
return;
}
if (!_sv.checkValidSequence(newSeq, _sv.getDegeneracy())) {
//commented
// ClothoCore.getCore().log("Sequence View: Cannot paste sequence with non nucleotide characters", LogLevel.MESSAGE);
return;
}
}//GEN-LAST:event_pasteMenuItemActionPerformed
private void revCutMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_revCutMenuItemActionPerformed
_sv.revCompFunctions("CUT", SequenceTextPane.getSelectedText());
SequenceTextPane.replaceSelection("");
}//GEN-LAST:event_revCutMenuItemActionPerformed
private void revCopyMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_revCopyMenuItemActionPerformed
_sv.revCompFunctions("COPY", SequenceTextPane.getSelectedText());
}//GEN-LAST:event_revCopyMenuItemActionPerformed
private void revPasteMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_revPasteMenuItemActionPerformed
if (_sv.revCompFunctions("PASTE", null).length() > 0) {
SequenceTextPane.replaceSelection(_sv.revCompFunctions("PASTE", null));
}
}//GEN-LAST:event_revPasteMenuItemActionPerformed
private void undoMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_undoMenuItemActionPerformed
_sv.undoActionPerformed(evt);
}//GEN-LAST:event_undoMenuItemActionPerformed
private void redoMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_redoMenuItemActionPerformed
_sv.redoActionPerformed(evt);
}//GEN-LAST:event_redoMenuItemActionPerformed
private void featuresButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_featuresButtonActionPerformed
_sv.highlightFeatures();
}//GEN-LAST:event_featuresButtonActionPerformed
private void createPartMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_createPartMenuItemActionPerformed
_sv.createPart();
}//GEN-LAST:event_createPartMenuItemActionPerformed
private void LockCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_LockCheckBoxActionPerformed
_sv.configureBasePairBoth(columnCountJLabel);
}//GEN-LAST:event_LockCheckBoxActionPerformed
private void CircularCheckBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_CircularCheckBoxActionPerformed
//_sv.sequenceChanged();
_sv.update_circular();
}//GEN-LAST:event_CircularCheckBoxActionPerformed
private void preferenceMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_preferenceMenuItemActionPerformed
_sv.openPreferences();
}//GEN-LAST:event_preferenceMenuItemActionPerformed
private void helpMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpMenuItemActionPerformed
_sv.openHelp();
}//GEN-LAST:event_helpMenuItemActionPerformed
private void undoMenuItemActionPerformed1(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_undoMenuItemActionPerformed1
// TODO add your handling code here:
}//GEN-LAST:event_undoMenuItemActionPerformed1
private void revCompMenuItemActionPerformed1(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_revCompMenuItemActionPerformed1
// TODO add your handling code here:
if (SequenceTextPane.getSelectedText() != null) {
NucSeq ns = new NucSeq(SequenceTextPane.getSelectedText());
OutputTextArea.setText(ns.revComp());
}
}//GEN-LAST:event_revCompMenuItemActionPerformed1
private void editFeatureLibraryMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editFeatureLibraryMenuItemActionPerformed
for (ToolWrapper tw : Collator.getAllTools()) {
if (tw.getUUID().equals("org.clothocad.tool.spreaditfeatures")) {
tw.launchTool();
break;
}
}
}//GEN-LAST:event_editFeatureLibraryMenuItemActionPerformed
private void WindowMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_WindowMenuActionPerformed
}//GEN-LAST:event_WindowMenuActionPerformed
private void EditMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_EditMenuActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_EditMenuActionPerformed
private void HighlightMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_HighlightMenuActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_HighlightMenuActionPerformed
private void highlightSelectedMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_highlightSelectedMenuItemActionPerformed
_sv.highlightUserSelected();
}//GEN-LAST:event_highlightSelectedMenuItemActionPerformed
private void highlightButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_highlightButtonActionPerformed
_sv.highlightUserSelected();
}//GEN-LAST:event_highlightButtonActionPerformed
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
_sv.removeFeatureEnzymeHighlights();
_sv.removeUserSelectedHighlights();
}//GEN-LAST:event_jButton1ActionPerformed
private void importGenbankMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_importGenbankMenuItemActionPerformed
_sv.importGenbankFeatures();
}//GEN-LAST:event_importGenbankMenuItemActionPerformed
private void importApEMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_importApEMenuItemActionPerformed
_sv.importApEFeatures();
}//GEN-LAST:event_importApEMenuItemActionPerformed
private void switchViewMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_switchViewMenuItemActionPerformed
_sv.switchView();
}//GEN-LAST:event_switchViewMenuItemActionPerformed
private void ExitMenuItemActionPerformed1(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ExitMenuItemActionPerformed1
if (!(_sv.getSaved())) {
// ClothoDialogBox db = new ClothoDialogBox("Warning!", "Sequence View contains unsaved data! Close without saving?");
String[] options = {"Yes Close", "No", "Save", "Hide"};
// int chosen = db.show_optionDialog(javax.swing.JOptionPane.YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.QUESTION_MESSAGE, options, options[2]);
int chosen = javax.swing.JOptionPane.showOptionDialog(
null,
"Sequence View contains unsaved data! Close without saving?",
"Warning!",
javax.swing.JOptionPane.YES_NO_CANCEL_OPTION,
javax.swing.JOptionPane.QUESTION_MESSAGE,
null,
options,
options[2]);//FIXME replace with ClothoDialogBox
if (chosen == javax.swing.JOptionPane.YES_OPTION) {
// No longer clears data on close, since windows can be
// re-opened after they are closed.
// _connection.updateClearedSequence();
SequenceTextPane.setText("");
setTitle("Clotho: Sequence View (Address: " + _sv.getIndex() + ") New Sequence");
CommentTextArea.setText("");
OutputTextArea.setText("");
_sv.updateWindowMenus();
//FIXME _sv.loadPart(new clothodata.ClothoPartsData());
if (_sv.getIsTC()) {
_sv.getTCView().close();
}
this.dispose();
} else if (chosen == javax.swing.JOptionPane.NO_OPTION) {
this.requestFocus();
} else if (chosen == 2) {
this.requestFocus();
_sv.saveSequence();
} else if (chosen == 3) {
if (_sv.getIsTC()) {
_sv.getTCView().close();
}
this.dispose();
}
} else {
if (_sv.getIsTC()) {
_sv.getTCView().close();
}
this.dispose();
}
}//GEN-LAST:event_ExitMenuItemActionPerformed1
private void primerMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_primerMenuItemActionPerformed
String sequence = SequenceTextPane.getSelectedText();
if (sequence==null) {
sequence=SequenceTextPane.getText();
}
_sv.createPrimers(sequence);
}//GEN-LAST:event_primerMenuItemActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new SequenceViewGUI().setVisible(true);
}
});
}
private JComponent guiContentPane;
private JRootPane guiRootPane;
private SequenceView _sv;
private int _firstResize;
private int _minWidth;
private int _minHeight;
private SequenceViewGUI _view;
private AbstractDocument doc;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JCheckBox CircularCheckBox;
private javax.swing.JTextArea CommentTextArea;
private javax.swing.JMenu EditMenu;
private javax.swing.JMenuItem ExitMenuItem;
private javax.swing.JMenu FileMenu;
private javax.swing.JMenu HelpMenu;
private javax.swing.JMenu HighlightMenu;
private javax.swing.JMenuItem LoadMenuItem;
private javax.swing.JCheckBox LockCheckBox;
private javax.swing.JMenuItem MapORFMenuItem;
private javax.swing.JCheckBox MethCheckBox;
private javax.swing.JMenuItem NextORFMenuItem;
private javax.swing.JMenu ORFMenu;
private javax.swing.JMenuItem OpenNewMenuItem;
private javax.swing.JTextArea OutputTextArea;
private javax.swing.JMenuItem PrevORFMenuItem;
private javax.swing.JMenuItem RevNextORFMenuItem;
private javax.swing.JMenuItem RevPrevORFMenuItem;
private javax.swing.JMenuItem SaveMenuItem;
private javax.swing.JLabel SequenceLengthJLabel;
private javax.swing.JTextPane SequenceTextPane;
private javax.swing.JMenuBar SequenceViewMenuBar;
private javax.swing.JMenu ToolMenu;
private javax.swing.JMenuItem ToolsMenuItem;
private javax.swing.JMenuItem TranslateMenuItem;
private javax.swing.JMenu WindowMenu;
private javax.swing.JLabel caretLocationJLabel;
private javax.swing.JLabel columnCountJLabel;
private javax.swing.JMenuItem copyMenuItem;
private javax.swing.JMenuItem createPartMenuItem;
private javax.swing.JMenuItem cutMenuItem;
private javax.swing.JCheckBox degeneracyCheckBox;
private javax.swing.JMenuItem editFeatureLibraryMenuItem;
private javax.swing.JLabel featureNameJLabel;
private javax.swing.JButton featuresButton;
private javax.swing.JMenuItem findMenuItem;
private javax.swing.JMenuItem helpMenuItem;
private javax.swing.JButton highlightButton;
private javax.swing.JMenuItem highlightEnzMenuItem;
private javax.swing.JMenuItem highlightFeaturesEnzymesMenuItem;
private javax.swing.JMenuItem highlightFeaturesMenuItem;
private javax.swing.JMenuItem highlightSelectedMenuItem;
private javax.swing.JMenuItem importApEMenuItem;
private javax.swing.JMenuItem importGenbankMenuItem;
private javax.swing.JTextArea indexTextArea;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
private javax.swing.JLabel jLabel16;
private javax.swing.JLabel jLabel17;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel20;
private javax.swing.JLabel jLabel21;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel24;
private javax.swing.JLabel jLabel25;
private javax.swing.JLabel jLabel26;
private javax.swing.JLabel jLabel27;
private javax.swing.JLabel jLabel28;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel30;
private javax.swing.JLabel jLabel32;
private javax.swing.JLabel jLabel33;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private javax.swing.JMenu jMenu1;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JScrollPane jScrollPane4;
private javax.swing.JSeparator jSeparator1;
private javax.swing.JSeparator jSeparator10;
private javax.swing.JSeparator jSeparator11;
private javax.swing.JSeparator jSeparator12;
private javax.swing.JSeparator jSeparator13;
private javax.swing.JSeparator jSeparator14;
private javax.swing.JSeparator jSeparator17;
private javax.swing.JSeparator jSeparator2;
private javax.swing.JSeparator jSeparator3;
private javax.swing.JSeparator jSeparator4;
private javax.swing.JSeparator jSeparator6;
private javax.swing.JButton lowerCaseButton;
private javax.swing.JToolBar mainToolBar;
private javax.swing.JLabel mouseLocationJLabel;
private javax.swing.JMenuItem moveOriginMenuItem;
private javax.swing.JButton packageButton;
private javax.swing.JMenuItem pasteMenuItem;
private javax.swing.JMenuItem preferenceMenuItem;
private javax.swing.JMenuItem primerMenuItem;
private javax.swing.JMenuItem redoMenuItem;
private javax.swing.JMenuItem removeAllHighlightsMenuItem;
private javax.swing.JMenuItem removeFeatureEnzymeHighlightMenuItem;
private javax.swing.JMenuItem removeUserSelectedHighlightMenuItem;
private javax.swing.JButton resSiteButton;
private javax.swing.JButton revCompButton;
private javax.swing.JMenuItem revCompMenuItem;
private javax.swing.JMenuItem revCopyMenuItem;
private javax.swing.JMenuItem revCutMenuItem;
private javax.swing.JMenuItem revPasteMenuItem;
private javax.swing.JButton revTransButton;
private javax.swing.JMenuItem revTranslateMenuItem;
private javax.swing.JButton switchButton;
private javax.swing.JMenuItem switchViewMenuItem;
private javax.swing.JButton transButton;
private javax.swing.JMenuItem undoMenuItem;
private javax.swing.JButton uppperCaseButton;
// End of variables declaration//GEN-END:variables
}