List of usage examples for java.awt Component setFocusTraversalKeys
public void setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)
From source file:Main.java
/** * Disables the forward and backward focus traversal keys on the given * component.//from w w w . j a va 2 s . co m */ public static void disableFocusTraversal(Component c) { Set<AWTKeyStroke> emptySet = Collections.emptySet(); c.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, emptySet); c.setFocusTraversalKeys(KeyboardFocusManager.BACKWARD_TRAVERSAL_KEYS, emptySet); }
From source file:savant.view.swing.NavigationBar.java
NavigationBar() {
this.setOpaque(false);
this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
String buttonStyle = "segmentedCapsule";
String shortcutMod = MiscUtils.MAC ? "Cmd" : "Ctrl";
add(getRigidPadding());//from w w w . java 2 s . c o m
JButton loadGenomeButton = (JButton) add(new JButton(""));
loadGenomeButton.setIcon(SavantIconFactory.getInstance().getIcon(SavantIconFactory.StandardIcon.GENOME));
loadGenomeButton.setToolTipText("Load or change genome");
loadGenomeButton.setFocusable(false);
loadGenomeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Savant.getInstance().showOpenGenomeDialog();
}
});
loadGenomeButton.putClientProperty("JButton.buttonType", buttonStyle);
loadGenomeButton.putClientProperty("JButton.segmentPosition", "first");
loadGenomeButton.setPreferredSize(ICON_SIZE);
loadGenomeButton.setMinimumSize(ICON_SIZE);
loadGenomeButton.setMaximumSize(ICON_SIZE);
JButton loadTrackButton = (JButton) add(new JButton(""));
loadTrackButton.setFocusable(false);
loadTrackButton.setIcon(SavantIconFactory.getInstance().getIcon(SavantIconFactory.StandardIcon.TRACK));
loadTrackButton.setToolTipText("Load a track");
loadTrackButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Savant.getInstance().openTrack();
}
});
loadTrackButton.putClientProperty("JButton.buttonType", buttonStyle);
loadTrackButton.putClientProperty("JButton.segmentPosition", "last");
loadTrackButton.setPreferredSize(ICON_SIZE);
loadTrackButton.setMinimumSize(ICON_SIZE);
loadTrackButton.setMaximumSize(ICON_SIZE);
if (!Savant.getInstance().isStandalone()) {
add(loadGenomeButton);
add(loadTrackButton);
add(getRigidPadding());
add(getRigidPadding());
} else {
loadGenomeButton.setVisible(false);
loadTrackButton.setVisible(false);
}
JLabel rangeText = new JLabel("Location ");
add(rangeText);
String[] a = { " ", " ", " ", " ", " ", " ", " ", " ", " ", " " };
locationField = new JComboBox(a);
locationField.setEditable(true);
locationField.setRenderer(new ReferenceListRenderer());
// When the item is chosen from the menu, navigate to the given feature/reference.
locationField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
if (!currentlyPopulating) {
if (ae.getActionCommand().equals("comboBoxChanged")) {
// Assumes that combo-box items created by populateCombo() are of the form "GENE (chrX:1-1000)".
String itemText = locationField.getSelectedItem().toString();
int lastBracketPos = itemText.lastIndexOf('(');
if (lastBracketPos > 0) {
itemText = itemText.substring(lastBracketPos + 1, itemText.length() - 1);
}
setRangeFromText(itemText);
}
}
}
});
// When the combo-box is popped open, we may want to repopulate the menu.
locationField.addPopupMenuListener(new PopupMenuListener() {
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent pme) {
String text = (String) locationField.getEditor().getItem();
if (!text.equals(lastPoppedUp)) {
try {
// Building the menu could take a while.
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
populateCombo();
} finally {
setCursor(Cursor.getDefaultCursor());
}
}
}
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent pme) {
}
@Override
public void popupMenuCanceled(PopupMenuEvent pme) {
}
});
// Add our special keystroke-handling to the JComboBox' text-field.
// We have to turn off default tab-handling so that tab can pop up our list.
Component textField = locationField.getEditor().getEditorComponent();
textField.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, Collections.EMPTY_SET);
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent evt) {
if (evt.getKeyCode() == KeyEvent.VK_TAB) {
locationField.showPopup();
} else if (evt.getModifiers() == KeyEvent.SHIFT_MASK) {
switch (evt.getKeyCode()) {
case KeyEvent.VK_LEFT:
locationController.shiftRangeLeft();
evt.consume();
break;
case KeyEvent.VK_RIGHT:
locationController.shiftRangeRight();
evt.consume();
break;
case KeyEvent.VK_UP:
locationController.zoomIn();
evt.consume();
break;
case KeyEvent.VK_DOWN:
locationController.zoomOut();
evt.consume();
break;
case KeyEvent.VK_HOME:
locationController.shiftRangeFarLeft();
evt.consume();
break;
case KeyEvent.VK_END:
locationController.shiftRangeFarRight();
evt.consume();
break;
}
}
}
});
add(locationField);
locationField.setToolTipText("Current display range");
locationField.setPreferredSize(LOCATION_SIZE);
locationField.setMaximumSize(LOCATION_SIZE);
locationField.setMinimumSize(LOCATION_SIZE);
add(getRigidPadding());
JButton goButton = (JButton) add(new JButton(" Go "));
goButton.putClientProperty("JButton.buttonType", buttonStyle);
goButton.putClientProperty("JButton.segmentPosition", "only");
goButton.setToolTipText("Go to specified range (Enter)");
goButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
setRangeFromText(locationField.getEditor().getItem().toString());
}
});
add(getRigidPadding());
JLabel l = new JLabel("Length: ");
add(l);
lengthLabel = (JLabel) add(new JLabel());
lengthLabel.setToolTipText("Length of the current range");
lengthLabel.setPreferredSize(LENGTH_SIZE);
lengthLabel.setMaximumSize(LENGTH_SIZE);
lengthLabel.setMinimumSize(LENGTH_SIZE);
add(Box.createGlue());
double screenwidth = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
JButton afterGo = null;
//if (screenwidth > 800) {
final JButton undoButton = (JButton) add(new JButton(""));
afterGo = undoButton;
undoButton.setIcon(SavantIconFactory.getInstance().getIcon(SavantIconFactory.StandardIcon.UNDO));
undoButton.setToolTipText("Undo range change (" + shortcutMod + "+Z)");
undoButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
locationController.undoLocationChange();
}
});
undoButton.putClientProperty("JButton.buttonType", buttonStyle);
undoButton.putClientProperty("JButton.segmentPosition", "first");
undoButton.setPreferredSize(ICON_SIZE);
undoButton.setMinimumSize(ICON_SIZE);
undoButton.setMaximumSize(ICON_SIZE);
final JButton redo = (JButton) add(new JButton(""));
redo.setIcon(SavantIconFactory.getInstance().getIcon(SavantIconFactory.StandardIcon.REDO));
redo.setToolTipText("Redo range change (" + shortcutMod + "+Y)");
redo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
locationController.redoLocationChange();
}
});
redo.putClientProperty("JButton.buttonType", buttonStyle);
redo.putClientProperty("JButton.segmentPosition", "last");
redo.setPreferredSize(ICON_SIZE);
redo.setMinimumSize(ICON_SIZE);
redo.setMaximumSize(ICON_SIZE);
//}
add(getRigidPadding());
add(getRigidPadding());
final JButton zoomInButton = (JButton) add(new JButton());
if (afterGo == null) {
afterGo = zoomInButton;
}
zoomInButton.setIcon(SavantIconFactory.getInstance().getIcon(SavantIconFactory.StandardIcon.ZOOMIN));
zoomInButton.putClientProperty("JButton.buttonType", buttonStyle);
zoomInButton.putClientProperty("JButton.segmentPosition", "first");
zoomInButton.setPreferredSize(ICON_SIZE);
zoomInButton.setMinimumSize(ICON_SIZE);
zoomInButton.setMaximumSize(ICON_SIZE);
zoomInButton.setToolTipText("Zoom in (Shift+Up)");
zoomInButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
locationController.zoomIn();
AnalyticsAgent.log(new NameValuePair[] { new NameValuePair("navigation-event", "zoomed"),
new NameValuePair("navigation-direction", "in"),
new NameValuePair("navigation-modality", "navbar") });
}
});
final JButton zoomOut = (JButton) add(new JButton(""));
zoomOut.setIcon(SavantIconFactory.getInstance().getIcon(SavantIconFactory.StandardIcon.ZOOMOUT));
zoomOut.setToolTipText("Zoom out (Shift+Down)");
zoomOut.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
locationController.zoomOut();
AnalyticsAgent.log(new NameValuePair[] { new NameValuePair("navigation-event", "zoomed"),
new NameValuePair("navigation-direction", "out"),
new NameValuePair("navigation-modality", "navbar") });
}
});
zoomOut.putClientProperty("JButton.buttonType", buttonStyle);
zoomOut.putClientProperty("JButton.segmentPosition", "last");
zoomOut.setPreferredSize(ICON_SIZE);
zoomOut.setMinimumSize(ICON_SIZE);
zoomOut.setMaximumSize(ICON_SIZE);
add(getRigidPadding());
add(getRigidPadding());
final JButton shiftFarLeft = (JButton) add(new JButton());
shiftFarLeft.setIcon(SavantIconFactory.getInstance().getIcon(SavantIconFactory.StandardIcon.SHIFT_FARLEFT));
shiftFarLeft.putClientProperty("JButton.buttonType", buttonStyle);
shiftFarLeft.putClientProperty("JButton.segmentPosition", "first");
shiftFarLeft.setToolTipText("Move to the beginning of the genome (Shift+Home)");
shiftFarLeft.setPreferredSize(ICON_SIZE);
shiftFarLeft.setMinimumSize(ICON_SIZE);
shiftFarLeft.setMaximumSize(ICON_SIZE);
shiftFarLeft.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
locationController.shiftRangeFarLeft();
AnalyticsAgent.log(new NameValuePair[] { new NameValuePair("navigation-event", "panned"),
new NameValuePair("navigation-direction", "left"),
new NameValuePair("navigation-modality", "navbar") });
}
});
final JButton shiftLeft = (JButton) add(new JButton());
shiftLeft.setIcon(SavantIconFactory.getInstance().getIcon(SavantIconFactory.StandardIcon.SHIFT_LEFT));
shiftLeft.putClientProperty("JButton.buttonType", buttonStyle);
shiftLeft.putClientProperty("JButton.segmentPosition", "middle");
shiftLeft.setToolTipText("Move left (Shift+Left)");
shiftLeft.setPreferredSize(ICON_SIZE);
shiftLeft.setMinimumSize(ICON_SIZE);
shiftLeft.setMaximumSize(ICON_SIZE);
shiftLeft.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
locationController.shiftRangeLeft();
AnalyticsAgent.log(new NameValuePair[] { new NameValuePair("navigation-event", "panned"),
new NameValuePair("navigation-direction", "left"),
new NameValuePair("navigation-modality", "navbar") });
}
});
final JButton shiftRight = (JButton) add(new JButton());
shiftRight.setIcon(SavantIconFactory.getInstance().getIcon(SavantIconFactory.StandardIcon.SHIFT_RIGHT));
shiftRight.putClientProperty("JButton.buttonType", buttonStyle);
shiftRight.putClientProperty("JButton.segmentPosition", "middle");
shiftRight.setToolTipText("Move right (Shift+Right)");
shiftRight.setPreferredSize(ICON_SIZE);
shiftRight.setMinimumSize(ICON_SIZE);
shiftRight.setMaximumSize(ICON_SIZE);
shiftRight.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
locationController.shiftRangeRight();
AnalyticsAgent.log(new NameValuePair[] { new NameValuePair("navigation-event", "panned"),
new NameValuePair("navigation-direction", "right"),
new NameValuePair("navigation-modality", "navbar") });
}
});
final JButton shiftFarRight = (JButton) add(new JButton());
shiftFarRight
.setIcon(SavantIconFactory.getInstance().getIcon(SavantIconFactory.StandardIcon.SHIFT_FARRIGHT));
shiftFarRight.putClientProperty("JButton.buttonType", buttonStyle);
shiftFarRight.putClientProperty("JButton.segmentPosition", "last");
shiftFarRight.setToolTipText("Move to the end of the genome (Shift+End)");
shiftFarRight.setPreferredSize(ICON_SIZE);
shiftFarRight.setMinimumSize(ICON_SIZE);
shiftFarRight.setMaximumSize(ICON_SIZE);
shiftFarRight.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
locationController.shiftRangeFarRight();
AnalyticsAgent.log(new NameValuePair[] { new NameValuePair("navigation-event", "panned"),
new NameValuePair("navigation-direction", "right"),
new NameValuePair("navigation-modality", "navbar") });
}
});
add(getRigidPadding());
locationController.addListener(new Listener<LocationChangedEvent>() {
@Override
public void handleEvent(LocationChangedEvent event) {
updateLocation(event.getReference(), (Range) event.getRange());
}
});
// When the genome changes, we may need to invalidate our menu.
GenomeController.getInstance().addListener(new Listener<GenomeChangedEvent>() {
@Override
public void handleEvent(GenomeChangedEvent event) {
lastPoppedUp = "INVALID";
}
});
this.addComponentListener(new ComponentListener() {
@Override
public void componentResized(ComponentEvent ce) {
int width = ce.getComponent().getWidth();
undoButton.setVisible(true);
redo.setVisible(true);
zoomInButton.setVisible(true);
zoomOut.setVisible(true);
shiftFarLeft.setVisible(true);
shiftLeft.setVisible(true);
shiftRight.setVisible(true);
shiftFarRight.setVisible(true);
// hide some components if the window isn't wide enough
if (width < 1200) {
undoButton.setVisible(false);
redo.setVisible(false);
}
if (width < 1000) {
shiftFarLeft.setVisible(false);
shiftFarRight.setVisible(false);
shiftRight.putClientProperty("JButton.segmentPosition", "last");
shiftLeft.putClientProperty("JButton.segmentPosition", "first");
} else {
shiftRight.putClientProperty("JButton.segmentPosition", "middle");
shiftLeft.putClientProperty("JButton.segmentPosition", "middle");
}
}
public void componentMoved(ComponentEvent ce) {
}
@Override
public void componentShown(ComponentEvent ce) {
}
@Override
public void componentHidden(ComponentEvent ce) {
}
});
}