X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FPopupMenu.java;h=5a12a0232363a33308739bd5f11d80e10bae9563;hb=bd7b3138379c2db8507fe7e8d25f5a921e2d9df7;hp=0a5224c4a0f9bdbcdedd6da206fda97549ea55a2;hpb=242fbce514e8895977fb7bbd20147cf0fe630407;p=jalview.git
diff --git a/src/jalview/gui/PopupMenu.java b/src/jalview/gui/PopupMenu.java
index 0a5224c..5a12a02 100644
--- a/src/jalview/gui/PopupMenu.java
+++ b/src/jalview/gui/PopupMenu.java
@@ -25,6 +25,7 @@ import jalview.analysis.AlignmentAnnotationUtils;
import jalview.analysis.AlignmentUtils;
import jalview.analysis.Conservation;
import jalview.bin.Cache;
+import jalview.bin.Jalview;
import jalview.commands.ChangeCaseCommand;
import jalview.commands.EditCommand;
import jalview.commands.EditCommand.Action;
@@ -46,14 +47,15 @@ import jalview.io.SequenceAnnotationReport;
import jalview.schemes.Blosum62ColourScheme;
import jalview.schemes.ColourSchemeI;
import jalview.schemes.ColourSchemes;
-import jalview.schemes.FeatureColour;
import jalview.schemes.PIDColourScheme;
import jalview.util.GroupUrlLink;
import jalview.util.GroupUrlLink.UrlStringTooLongException;
import jalview.util.MessageManager;
import jalview.util.StringUtils;
import jalview.util.UrlLink;
+import jalview.util.dialogrunner.RunResponse;
+import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -71,11 +73,14 @@ import java.util.TreeMap;
import java.util.Vector;
import javax.swing.JCheckBoxMenuItem;
-import javax.swing.JColorChooser;
-import javax.swing.JDialog;
+import javax.swing.JComponent;
+import javax.swing.JInternalFrame;
+import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
+import javax.swing.JPanel;
import javax.swing.JPopupMenu;
+import javax.swing.JScrollPane;
/**
* DOCUMENT ME!
@@ -593,13 +598,33 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
*/
protected void showFeatureDetails(SequenceFeature sf)
{
- CutAndPasteHtmlTransfer cap = new CutAndPasteHtmlTransfer();
- // it appears Java's CSS does not support border-collaps :-(
- cap.addStylesheetRule("table { border-collapse: collapse;}");
- cap.addStylesheetRule("table, td, th {border: 1px solid black;}");
- cap.setText(sf.getDetailsReport());
-
- Desktop.addInternalFrame(cap,
+ JInternalFrame details;
+ if (/** @j2sNative true || */ false)
+ {
+ details = new JInternalFrame();
+ JPanel panel = new JPanel(new BorderLayout());
+ panel.setOpaque(true);
+ panel.setBackground(Color.white);
+ // TODO JAL-3026 set style of table correctly for feature details
+ JLabel reprt = new JLabel(MessageManager.formatMessage("label.html_content",
+ new Object[]
+ { sf.getDetailsReport()}));
+ reprt.setBackground(Color.WHITE);
+ reprt.setOpaque(true);
+ panel.add(reprt,BorderLayout.CENTER);
+ details.setContentPane(panel);
+ details.pack();
+ }
+ else
+ {
+ CutAndPasteHtmlTransfer cap = new CutAndPasteHtmlTransfer();
+ // it appears Java's CSS does not support border-collaps :-(
+ cap.addStylesheetRule("table { border-collapse: collapse;}");
+ cap.addStylesheetRule("table, td, th {border: 1px solid black;}");
+ cap.setText(sf.getDetailsReport());
+ details = cap;
+ }
+ Desktop.addInternalFrame(details,
MessageManager.getString("label.feature_details"), 500, 500);
}
@@ -1273,7 +1298,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
@Override
public void actionPerformed(ActionEvent actionEvent)
{
- editSequence_actionPerformed(actionEvent);
+ editSequence_actionPerformed();
}
});
makeReferenceSeq.setText(
@@ -1611,8 +1636,8 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
public void createSequenceDetailsReport(SequenceI[] sequences)
{
- CutAndPasteHtmlTransfer cap = new CutAndPasteHtmlTransfer();
StringBuilder contents = new StringBuilder(128);
+ contents.append("
");
for (SequenceI seq : sequences)
{
contents.append("" + MessageManager.formatMessage(
@@ -1623,9 +1648,30 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
contents, seq, true, true, ap.getSeqPanel().seqCanvas.fr);
contents.append("");
}
- cap.setText("" + contents.toString() + "");
+ contents.append("");
+ String report = contents.toString();
+
+ JInternalFrame frame;
+ if (Jalview.isJS())
+ {
+ JLabel textLabel = new JLabel();
+ textLabel.setText(report);
+ textLabel.setBackground(Color.WHITE);
+ JPanel pane = new JPanel(new BorderLayout());
+ ((JPanel) pane).setOpaque(true);
+ pane.setBackground(Color.WHITE);
+ ((JPanel) pane).add(textLabel, BorderLayout.NORTH);
+ frame = new JInternalFrame();
+ frame.getContentPane().add(new JScrollPane(pane));
+ }
+ else
+ {
+ CutAndPasteHtmlTransfer cap = new CutAndPasteHtmlTransfer();
+ cap.setText(report);
+ frame = cap;
+ }
- Desktop.addInternalFrame(cap,
+ Desktop.addInternalFrame(frame,
MessageManager.formatMessage("label.sequence_details_for",
(sequences.length == 1 ? new Object[]
{ sequences[0].getDisplayId(true) }
@@ -1633,7 +1679,6 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
{ MessageManager
.getString("label.selection") })),
500, 400);
-
}
protected void showNonconserved_actionPerformed()
@@ -1752,30 +1797,27 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
}
/**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
+ * Shows a dialog where group name and description may be edited
*/
protected void groupName_actionPerformed()
{
-
SequenceGroup sg = getGroup();
EditNameDialog dialog = new EditNameDialog(sg.getName(),
sg.getDescription(),
- " " + MessageManager.getString("label.group_name") + " ",
- MessageManager.getString("label.group_description") + " ",
+ MessageManager.getString("label.group_name"),
+ MessageManager.getString("label.group_description"));
+ dialog.showDialog(ap.alignFrame,
MessageManager.getString("label.edit_group_name_description"),
- ap.alignFrame);
-
- if (!dialog.accept)
- {
- return;
- }
-
- sg.setName(dialog.getName());
- sg.setDescription(dialog.getDescription());
- refresh();
+ new RunResponse(JvOptionPane.OK_OPTION)
+ {
+ @Override
+ public void run()
+ {
+ sg.setName(dialog.getName());
+ sg.setDescription(dialog.getDescription());
+ refresh();
+ }
+ });
}
/**
@@ -1796,48 +1838,41 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
}
/**
- * DOCUMENT ME!
- *
- * @param e
- * DOCUMENT ME!
+ * Shows a dialog where sequence name and description may be edited
*/
void sequenceName_actionPerformed()
{
EditNameDialog dialog = new EditNameDialog(sequence.getName(),
sequence.getDescription(),
- " " + MessageManager.getString("label.sequence_name")
- + " ",
- MessageManager.getString("label.sequence_description") + " ",
+ MessageManager.getString("label.sequence_name"),
+ MessageManager.getString("label.sequence_description"));
+ dialog.showDialog(ap.alignFrame,
MessageManager.getString(
"label.edit_sequence_name_description"),
- ap.alignFrame);
-
- if (!dialog.accept)
- {
- return;
- }
-
- if (dialog.getName() != null)
- {
- if (dialog.getName().indexOf(" ") > -1)
- {
- JvOptionPane.showMessageDialog(ap,
- MessageManager
- .getString("label.spaces_converted_to_backslashes"),
- MessageManager
- .getString("label.no_spaces_allowed_sequence_name"),
- JvOptionPane.WARNING_MESSAGE);
- }
-
- sequence.setName(dialog.getName().replace(' ', '_'));
- ap.paintAlignment(false, false);
- }
-
- sequence.setDescription(dialog.getDescription());
-
- ap.av.firePropertyChange("alignment", null,
- ap.av.getAlignment().getSequences());
-
+ new RunResponse(JvOptionPane.OK_OPTION)
+ {
+ @Override
+ public void run()
+ {
+ if (dialog.getName() != null)
+ {
+ if (dialog.getName().indexOf(" ") > -1)
+ {
+ JvOptionPane.showMessageDialog(ap,
+ MessageManager.getString(
+ "label.spaces_converted_to_underscores"),
+ MessageManager.getString(
+ "label.no_spaces_allowed_sequence_name"),
+ JvOptionPane.WARNING_MESSAGE);
+ }
+ sequence.setName(dialog.getName().replace(' ', '_'));
+ ap.paintAlignment(false, false);
+ }
+ sequence.setDescription(dialog.getDescription());
+ ap.av.firePropertyChange("alignment", null,
+ ap.av.getAlignment().getSequences());
+ }
+ });
}
/**
@@ -2041,13 +2076,7 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
*/
if (!seqs.isEmpty())
{
- ap.getSeqPanel().seqCanvas.getFeatureRenderer()
- .amendFeatures(seqs, features, true, ap,new Runnable() {
- public void run() {
- ap.alignFrame.setShowSeqFeatures(true);
- ap.av.setSearchResults(null); // clear highlighting
- ap.repaint(); // draw new/amended features
- }});
+ new FeatureEditor(ap, seqs, features, true).showDialog();
}
}
@@ -2079,7 +2108,12 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
}
- public void editSequence_actionPerformed(ActionEvent actionEvent)
+ /**
+ * Shows a dialog where sequence characters may be edited. Any changes are
+ * applied, and added as an available 'Undo' item in the edit commands
+ * history.
+ */
+ public void editSequence_actionPerformed()
{
SequenceGroup sg = ap.av.getSelectionGroup();
@@ -2093,24 +2127,28 @@ public class PopupMenu extends JPopupMenu implements ColourChangeListener
EditNameDialog dialog = new EditNameDialog(
sequence.getSequenceAsString(sg.getStartRes(),
sg.getEndRes() + 1),
- null, MessageManager.getString("label.edit_sequence"), null,
+ null, MessageManager.getString("label.edit_sequence"), null);
+ dialog.showDialog(ap.alignFrame,
MessageManager.getString("label.edit_sequence"),
- ap.alignFrame);
-
- if (dialog.accept)
- {
- EditCommand editCommand = new EditCommand(
- MessageManager.getString("label.edit_sequences"),
- Action.REPLACE,
- dialog.getName().replace(' ', ap.av.getGapCharacter()),
- sg.getSequencesAsArray(ap.av.getHiddenRepSequences()),
- sg.getStartRes(), sg.getEndRes() + 1, ap.av.getAlignment());
-
- ap.alignFrame.addHistoryItem(editCommand);
-
- ap.av.firePropertyChange("alignment", null,
- ap.av.getAlignment().getSequences());
- }
+ new RunResponse(JvOptionPane.OK_OPTION)
+ {
+ @Override
+ public void run()
+ {
+ EditCommand editCommand = new EditCommand(
+ MessageManager.getString("label.edit_sequences"),
+ Action.REPLACE,
+ dialog.getName().replace(' ',
+ ap.av.getGapCharacter()),
+ sg.getSequencesAsArray(
+ ap.av.getHiddenRepSequences()),
+ sg.getStartRes(), sg.getEndRes() + 1,
+ ap.av.getAlignment());
+ ap.alignFrame.addHistoryItem(editCommand);
+ ap.av.firePropertyChange("alignment", null,
+ ap.av.getAlignment().getSequences());
+ }
+ });
}
}