+ new Insets(0, 2, 4, 2), 70, 1));
+ return connectTab;
+ }
+
+ /**
+ * Initialises the parent panel which contains the tabbed sections.
+ *
+ * @return
+ */
+ private JPanel initOkCancelPanel()
+ {
+ JButton ok = new JButton();
+ ok.setText(MessageManager.getString("action.ok"));
+ ok.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ ok_actionPerformed(e);
+ }
+ });
+ JButton cancel = new JButton();
+ cancel.setText(MessageManager.getString("action.cancel"));
+ cancel.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ cancel_actionPerformed(e);
+ }
+ });
+ JPanel okCancelPanel = new JPanel();
+ okCancelPanel.add(ok);
+ okCancelPanel.add(cancel);
+ return okCancelPanel;
+ }
+
+ /**
+ * Initialises the Colours tabbed panel.
+ *
+ * @return
+ */
+ private JPanel initColoursTab()
+ {
+ JPanel coloursTab = new JPanel();
+ coloursTab.setBorder(new TitledBorder(MessageManager
+ .getString("action.open_new_alignment")));
+ coloursTab.setLayout(new FlowLayout());
+ JLabel mincolourLabel = new JLabel();
+ mincolourLabel.setFont(LABEL_FONT);
+ mincolourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+ mincolourLabel.setText(MessageManager.getString("label.min_colour"));
+ minColour.setFont(LABEL_FONT);
+ minColour.setBorder(BorderFactory.createEtchedBorder());
+ minColour.setPreferredSize(new Dimension(40, 20));
+ minColour.addMouseListener(new MouseAdapter()
+ {
+ public void mousePressed(MouseEvent e)
+ {
+ minColour_actionPerformed(minColour);
+ }
+ });
+ JLabel maxcolourLabel = new JLabel();
+ maxcolourLabel.setFont(LABEL_FONT);
+ maxcolourLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+ maxcolourLabel.setText(MessageManager.getString("label.max_colour"));
+ maxColour.setFont(LABEL_FONT);
+ maxColour.setBorder(BorderFactory.createEtchedBorder());
+ maxColour.setPreferredSize(new Dimension(40, 20));
+ maxColour.addMouseListener(new MouseAdapter()
+ {
+ public void mousePressed(MouseEvent e)
+ {
+ maxColour_actionPerformed(maxColour);
+ }
+ });
+
+ protColour.setFont(LABEL_FONT);
+ protColour.setBounds(new Rectangle(172, 225, 155, 21));
+ JLabel protColourLabel = new JLabel();
+ protColourLabel.setFont(LABEL_FONT);
+ protColourLabel.setHorizontalAlignment(SwingConstants.LEFT);
+ protColourLabel.setText(MessageManager
+ .getString("label.prot_alignment_colour") + " ");
+ JvSwingUtils.addtoLayout(coloursTab, MessageManager
+ .getString("label.default_colour_scheme_for_alignment"),
+ protColourLabel, protColour);
+
+ nucColour.setFont(LABEL_FONT);
+ nucColour.setBounds(new Rectangle(172, 240, 155, 21));
+ JLabel nucColourLabel = new JLabel();
+ nucColourLabel.setFont(LABEL_FONT);
+ nucColourLabel.setHorizontalAlignment(SwingConstants.LEFT);
+ nucColourLabel.setText(MessageManager
+ .getString("label.nuc_alignment_colour")
+ + " ");
+ JvSwingUtils.addtoLayout(coloursTab, MessageManager
+ .getString("label.default_colour_scheme_for_alignment"),
+ nucColourLabel, nucColour);
+
+ JPanel annotationShding = new JPanel();
+ annotationShding.setBorder(new TitledBorder(MessageManager
+ .getString("label.annotation_shading_default")));
+ annotationShding.setLayout(new GridLayout(1, 2));
+ JvSwingUtils.addtoLayout(annotationShding, MessageManager
+ .getString("label.default_minimum_colour_annotation_shading"),
+ mincolourLabel, minColour);
+ JvSwingUtils.addtoLayout(annotationShding, MessageManager
+ .getString("label.default_maximum_colour_annotation_shading"),
+ maxcolourLabel, maxColour);
+ coloursTab.add(annotationShding); // , FlowLayout.LEFT);
+ return coloursTab;
+ }
+
+ /**
+ * Initialises the Structure tabbed panel.
+ *
+ * @return
+ */
+ private JPanel initStructureTab()
+ {
+ structureTab = new JPanel();
+
+ structureTab.setBorder(new TitledBorder(MessageManager
+ .getString("label.structure_options")));
+ structureTab.setLayout(null);
+ final int width = 400;
+ final int height = 22;
+ final int lineSpacing = 25;
+ int ypos = 30;
+
+ structFromPdb.setFont(LABEL_FONT);
+ structFromPdb.setText(MessageManager.getString("label.struct_from_pdb"));
+ structFromPdb.setBounds(new Rectangle(5, ypos, width, height));
+ structFromPdb.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ boolean selected = structFromPdb.isSelected();
+ // enable other options only when the first is checked
+ useRnaView.setEnabled(selected);
+ addSecondaryStructure.setEnabled(selected);
+ addTempFactor.setEnabled(selected);
+ }
+ });
+ structureTab.add(structFromPdb);
+
+ // indent checkboxes that are conditional on the first one
+ ypos += lineSpacing;
+ useRnaView.setFont(LABEL_FONT);
+ useRnaView.setText(MessageManager.getString("label.use_rnaview"));
+ useRnaView.setBounds(new Rectangle(25, ypos, width, height));
+ structureTab.add(useRnaView);
+
+ ypos += lineSpacing;
+ addSecondaryStructure.setFont(LABEL_FONT);
+ addSecondaryStructure.setText(MessageManager
+ .getString("label.autoadd_secstr"));
+ addSecondaryStructure.setBounds(new Rectangle(25, ypos, width, height));
+ structureTab.add(addSecondaryStructure);
+
+ ypos += lineSpacing;
+ addTempFactor.setFont(LABEL_FONT);
+ addTempFactor.setText(MessageManager.getString("label.autoadd_temp"));
+ addTempFactor.setBounds(new Rectangle(25, ypos, width, height));
+ structureTab.add(addTempFactor);
+
+ ypos += lineSpacing;
+ JLabel viewerLabel = new JLabel();
+ viewerLabel.setFont(LABEL_FONT);
+ viewerLabel.setHorizontalAlignment(SwingConstants.LEFT);
+ viewerLabel.setText(MessageManager.getString("label.structure_viewer"));
+ viewerLabel.setBounds(new Rectangle(10, ypos, 200, height));
+ structureTab.add(viewerLabel);
+
+ structViewer.setFont(LABEL_FONT);
+ structViewer.setBounds(new Rectangle(160, ypos, 120, height));
+ structViewer.addItem(ViewerType.JMOL.name());
+ structViewer.addItem(ViewerType.CHIMERA.name());
+ structViewer.addActionListener(new ActionListener()
+ {
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ structureViewer_actionPerformed((String) structViewer
+ .getSelectedItem());
+ }
+ });
+ structureTab.add(structViewer);
+
+ ypos += lineSpacing;
+ JLabel pathLabel = new JLabel();
+ pathLabel.setFont(new java.awt.Font("SansSerif", 0, 11));
+ pathLabel.setHorizontalAlignment(SwingConstants.LEFT);
+ pathLabel.setText(MessageManager.getString("label.chimera_path"));
+ final String tooltip = JvSwingUtils.wrapTooltip(true,
+ MessageManager.getString("label.chimera_path_tip"));
+ pathLabel.setToolTipText(tooltip);
+ pathLabel.setBounds(new Rectangle(10, ypos, 140, height));
+ structureTab.add(pathLabel);
+
+ chimeraPath.setFont(LABEL_FONT);
+ chimeraPath.setText("");
+ chimeraPath.setBounds(new Rectangle(160, ypos, 300, height));
+ chimeraPath.addMouseListener(new MouseAdapter()
+ {
+ @Override
+ public void mouseClicked(MouseEvent e)
+ {
+ if (e.getClickCount() == 2)
+ {
+ String chosen = openFileChooser();
+ if (chosen != null)
+ {
+ chimeraPath.setText(chosen);
+ }
+ }
+ }
+ });
+ structureTab.add(chimeraPath);
+
+ ypos += lineSpacing;
+ // scrl_pdbDocFieldConfig.setPreferredSize(new Dimension(450, 100));
+ // scrl_pdbDocFieldConfig
+ // .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+ // scrl_pdbDocFieldConfig.setBounds();
+ PDBDocFieldPreferences docFieldPref = new PDBDocFieldPreferences(
+ PreferenceSource.PREFERENCES);
+ docFieldPref.setBounds(new Rectangle(10, ypos + 5, 450, 120));
+ structureTab.add(docFieldPref);
+
+
+
+
+ return structureTab;
+ }
+
+
+ /**
+ * Action on choosing a structure viewer from combobox options.
+ *
+ * @param selectedItem
+ */
+ protected void structureViewer_actionPerformed(String selectedItem)
+ {
+ }
+
+ /**
+ * Show a dialog for the user to choose a file. Returns the chosen path, or
+ * null on Cancel.
+ *
+ * @return
+ */
+ protected String openFileChooser()
+ {
+ String choice = null;
+ JFileChooser chooser = new JFileChooser();
+
+ // chooser.setFileView(new JalviewFileView());
+ chooser.setDialogTitle(MessageManager
+ .getString("label.open_local_file"));
+ chooser.setToolTipText(MessageManager.getString("action.open"));
+
+ int value = chooser.showOpenDialog(this);
+
+ if (value == JFileChooser.APPROVE_OPTION)
+ {
+ choice = chooser.getSelectedFile().getPath();
+ }
+ return choice;
+ }
+
+ /**
+ * Validate the structure tab preferences; if invalid, set focus on this tab.
+ *
+ * @param e
+ */
+ protected boolean validateStructure(FocusEvent e)
+ {
+ if (!validateStructure())
+ {
+ e.getComponent().requestFocusInWindow();
+ return false;
+ }
+ return true;
+ }
+
+ protected boolean validateStructure()
+ {
+ return false;
+ }
+
+ /**
+ * Initialises the Visual tabbed panel.
+ *
+ * @return
+ */
+ private JPanel initVisualTab()
+ {
+ JPanel visualTab = new JPanel();
+ visualTab.setBorder(new TitledBorder(MessageManager
+ .getString("action.open_new_alignment")));
+ visualTab.setLayout(null);
+ fullScreen.setFont(LABEL_FONT);
+ fullScreen.setHorizontalAlignment(SwingConstants.RIGHT);
+ fullScreen.setHorizontalTextPosition(SwingConstants.LEFT);
+ fullScreen.setText(MessageManager.getString("label.maximize_window"));
+ quality.setEnabled(false);
+ quality.setFont(LABEL_FONT);
+ quality.setHorizontalAlignment(SwingConstants.RIGHT);
+ quality.setHorizontalTextPosition(SwingConstants.LEFT);
+ quality.setSelected(true);
+ quality.setText(MessageManager.getString("label.quality"));
+ conservation.setEnabled(false);
+ conservation.setFont(LABEL_FONT);
+ conservation.setHorizontalAlignment(SwingConstants.RIGHT);
+ conservation.setHorizontalTextPosition(SwingConstants.LEFT);
+ conservation.setSelected(true);
+ conservation.setText(MessageManager.getString("label.conservation"));
+ identity.setEnabled(false);
+ identity.setFont(LABEL_FONT);
+ identity.setHorizontalAlignment(SwingConstants.RIGHT);
+ identity.setHorizontalTextPosition(SwingConstants.LEFT);
+ identity.setSelected(true);
+ identity.setText(MessageManager.getString("label.consensus"));
+ JLabel showGroupbits = new JLabel();
+ showGroupbits.setFont(LABEL_FONT);
+ showGroupbits.setHorizontalAlignment(SwingConstants.RIGHT);
+ showGroupbits.setHorizontalTextPosition(SwingConstants.LEFT);
+ showGroupbits.setText(MessageManager.getString("action.show_group")
+ + ":");
+ JLabel showConsensbits = new JLabel();
+ showConsensbits.setFont(LABEL_FONT);
+ showConsensbits.setHorizontalAlignment(SwingConstants.RIGHT);
+ showConsensbits.setHorizontalTextPosition(SwingConstants.LEFT);
+ showConsensbits.setText(MessageManager.getString("label.consensus")
+ + ":");
+ showConsensHistogram.setEnabled(false);
+ showConsensHistogram.setFont(LABEL_FONT);
+ showConsensHistogram.setHorizontalAlignment(SwingConstants.RIGHT);
+ showConsensHistogram.setHorizontalTextPosition(SwingConstants.LEFT);
+ showConsensHistogram.setSelected(true);
+ showConsensHistogram.setText(MessageManager
+ .getString("label.histogram"));
+ showConsensLogo.setEnabled(false);
+ showConsensLogo.setFont(LABEL_FONT);
+ showConsensLogo.setHorizontalAlignment(SwingConstants.RIGHT);
+ showConsensLogo.setHorizontalTextPosition(SwingConstants.LEFT);
+ showConsensLogo.setSelected(true);
+ showConsensLogo.setText(MessageManager.getString("label.logo"));
+ showGroupConsensus.setEnabled(false);
+ showGroupConsensus.setFont(LABEL_FONT);
+ showGroupConsensus.setHorizontalAlignment(SwingConstants.RIGHT);
+ showGroupConsensus.setHorizontalTextPosition(SwingConstants.LEFT);
+ showGroupConsensus.setSelected(true);
+ showGroupConsensus.setText(MessageManager.getString("label.consensus"));
+ showGroupConservation.setEnabled(false);
+ showGroupConservation.setFont(LABEL_FONT);
+ showGroupConservation.setHorizontalAlignment(SwingConstants.RIGHT);
+ showGroupConservation.setHorizontalTextPosition(SwingConstants.LEFT);
+ showGroupConservation.setSelected(true);
+ showGroupConservation.setText(MessageManager
+ .getString("label.conservation"));
+ showNpTooltip.setEnabled(true);
+ showNpTooltip.setFont(LABEL_FONT);
+ showNpTooltip.setHorizontalAlignment(SwingConstants.RIGHT);
+ showNpTooltip.setHorizontalTextPosition(SwingConstants.LEFT);
+ showNpTooltip.setSelected(true);
+ showNpTooltip.setText(MessageManager
+ .getString("label.non_positional_features"));
+ showDbRefTooltip.setEnabled(true);
+ showDbRefTooltip.setFont(LABEL_FONT);
+ showDbRefTooltip.setHorizontalAlignment(SwingConstants.RIGHT);
+ showDbRefTooltip.setHorizontalTextPosition(SwingConstants.LEFT);
+ showDbRefTooltip.setSelected(true);
+ showDbRefTooltip.setText(MessageManager
+ .getString("label.database_references"));
+ annotations.setFont(LABEL_FONT);
+ annotations.setHorizontalAlignment(SwingConstants.RIGHT);
+ annotations.setHorizontalTextPosition(SwingConstants.LEADING);
+ annotations.setSelected(true);
+ annotations.setText(MessageManager.getString("label.show_annotations"));
+ annotations.setBounds(new Rectangle(169, 12, 200, 23));
+ annotations.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ annotations_actionPerformed(e);
+ }
+ });
+ identity.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ annotations_actionPerformed(e);
+ }
+ });
+ showGroupConsensus.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ annotations_actionPerformed(e);
+ }
+ });
+ showUnconserved.setFont(LABEL_FONT);
+ showUnconserved.setHorizontalAlignment(SwingConstants.RIGHT);
+ showUnconserved.setHorizontalTextPosition(SwingConstants.LEFT);
+ showUnconserved.setSelected(true);
+ showUnconserved.setText(MessageManager
+ .getString("action.show_unconserved"));
+ showUnconserved.addActionListener(new ActionListener()
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ showunconserved_actionPerformed(e);
+ }
+ });
+
+ // TODO these are not yet added to / action from Preferences
+ // JCheckBox shareSelections = new JCheckBox();
+ // shareSelections.setFont(verdana11);
+ // shareSelections.setHorizontalAlignment(SwingConstants.RIGHT);
+ // shareSelections.setHorizontalTextPosition(SwingConstants.LEFT);
+ // shareSelections.setSelected(true);
+ // shareSelections.setText(MessageManager
+ // .getString("label.share_selection_across_views"));
+ // JCheckBox followHighlight = new JCheckBox();
+ // followHighlight.setFont(verdana11);
+ // followHighlight.setHorizontalAlignment(SwingConstants.RIGHT);
+ // followHighlight.setHorizontalTextPosition(SwingConstants.LEFT);
+ // // showUnconserved.setBounds(new Rectangle(169, 40, 200, 23));
+ // followHighlight.setSelected(true);
+ // followHighlight.setText(MessageManager
+ // .getString("label.scroll_highlighted_regions"));
+
+ seqLimit.setFont(LABEL_FONT);
+ seqLimit.setHorizontalAlignment(SwingConstants.RIGHT);
+ seqLimit.setHorizontalTextPosition(SwingConstants.LEFT);
+ seqLimit.setText(MessageManager.getString("label.full_sequence_id"));
+ smoothFont.setFont(LABEL_FONT);
+ smoothFont.setHorizontalAlignment(SwingConstants.RIGHT);
+ smoothFont.setHorizontalTextPosition(SwingConstants.LEADING);
+ smoothFont.setText(MessageManager.getString("label.smooth_font"));
+ scaleProteinToCdna.setFont(LABEL_FONT);
+ scaleProteinToCdna.setHorizontalAlignment(SwingConstants.RIGHT);
+ scaleProteinToCdna.setHorizontalTextPosition(SwingConstants.LEADING);
+ scaleProteinToCdna.setText(MessageManager
+ .getString("label.scale_protein_to_cdna"));
+ scaleProteinToCdna.setToolTipText(MessageManager
+ .getString("label.scale_protein_to_cdna_tip"));
+ JLabel gapLabel = new JLabel();
+ gapLabel.setFont(LABEL_FONT);
+ gapLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+ gapLabel.setText(MessageManager.getString("label.gap_symbol") + " ");
+ JLabel fontLabel = new JLabel();
+ fontLabel.setFont(LABEL_FONT);
+ fontLabel.setHorizontalAlignment(SwingConstants.RIGHT);
+ fontLabel.setText(MessageManager.getString("label.font"));
+ fontSizeCB.setFont(LABEL_FONT);
+ fontSizeCB.setBounds(new Rectangle(320, 112, 65, 23));
+ fontStyleCB.setFont(LABEL_FONT);
+ fontStyleCB.setBounds(new Rectangle(382, 112, 80, 23));
+ fontNameCB.setFont(LABEL_FONT);
+ fontNameCB.setBounds(new Rectangle(172, 112, 147, 23));
+ gapSymbolCB.setFont(LABEL_FONT);
+ gapSymbolCB.setBounds(new Rectangle(172, 215, 69, 23));