public DualSelectionDialog(boolean valuePickerOnTop, JFrame parent, byte previousValue,
Byte[] previousMemos) {
super(parent, true);
- JTabbedPane tabbedPane = new JTabbedPane();
+ tabbedPane = new JTabbedPane();
numberPanel = new SelectNumberPanel(this, previousValue);
memosPanel = new SelectMemosPanel(this, previousMemos);
tabbedPane.addTab("Select", numberPanel);
setResizable(false);
}
+ private JTabbedPane tabbedPane;
+ JTabbedPane getTabbedPane() {
+ return tabbedPane;
+ }
+
private int value = -1;
private byte[] memos = null;
\r
import java.awt.BorderLayout;\r
import java.awt.Component;\r
-import java.awt.Container;\r
import java.awt.Font;\r
-import java.awt.Frame;\r
import java.awt.GridLayout;\r
import java.awt.event.FocusAdapter;\r
import java.awt.event.FocusEvent;\r
\r
import javax.swing.JButton;\r
import javax.swing.JCheckBox;\r
-import javax.swing.JDialog;\r
import javax.swing.JPanel;\r
-import javax.swing.JTabbedPane;\r
import javax.swing.JToggleButton;\r
-import javax.swing.WindowConstants;\r
-\r
-/*\r
- * InputDialog.java\r
- *\r
- * Created on Mar 25, 2011, 5:50:15 PM\r
- */\r
\r
/**\r
* \r
\r
private JButton btnClear;\r
private JCheckBox[] ckb = new JCheckBox[9];\r
- private int focusedElement;\r
- private boolean focusedOkButton;\r
- private boolean focusedClearButton;\r
+ private int focusedElement = 4;\r
private JButton btnConfirm;\r
private JPanel panelClear = new JPanel(new GridLayout());\r
private JPanel panel789 = new JPanel(new GridLayout());\r
super(true);\r
this.parent = parent;\r
initComponents(previousMemos);\r
+ parent.getTabbedPane().addKeyListener(innerKeyListener);\r
+ parent.getTabbedPane().addFocusListener(innerFocusListener);\r
}\r
\r
private void configureCheckBox(JCheckBox btn, String text, final int button) {\r
focusedElement = 4;\r
}\r
\r
+ private boolean isTabSelected() {\r
+ int idx = parent.getTabbedPane().getSelectedIndex();\r
+ if (idx != 1) {\r
+ System.out.println("SelectMemosPanel.isTabSelected() TAB NOT SELECTED");\r
+ }\r
+ return (idx == 1);\r
+ }\r
+ \r
private void buttonClicked(int button) {\r
System.out.println("InputDialog.buttonClicked() button:" + button);\r
byte value = (byte)(button + 1);\r
private class InnerKeyListener extends KeyAdapter {\r
@Override\r
public void keyPressed(KeyEvent ke) {\r
+ if (isTabSelected() && focusedTabPane()) {\r
+ int code = ke.getKeyCode();\r
+ if (code == KeyEvent.VK_H) {\r
+ System.out.println("MemosPanel tab selected <>HL");\r
+ int index = parent.getTabbedPane().getSelectedIndex();\r
+ int newIndex = (index == 0)?1:0;\r
+ System.out.println("MemosPanel tab selected index:"+index);\r
+ System.out.println("MemosPanel tab selected newIndex:"+newIndex);\r
+ parent.getTabbedPane().setSelectedIndex(newIndex);\r
+ parent.getTabbedPane().requestFocusInWindow();\r
+ return;\r
+ }\r
+ else if (code == KeyEvent.VK_L) {\r
+ return;\r
+ }\r
+ }\r
+ if (!isTabSelected()) {\r
+ return;\r
+ }\r
int code = ke.getKeyCode();\r
- if (code == KeyEvent.VK_KP_UP || code == KeyEvent.VK_UP) {\r
- if (focusedClearButton) {\r
+ if (code == KeyEvent.VK_KP_UP || code == KeyEvent.VK_UP || code == KeyEvent.VK_K) {\r
+ if (focusedTabPane()) {\r
+ return;\r
+ }\r
+ if (focusedClearButton()) {\r
+ parent.getTabbedPane().requestFocusInWindow();\r
return;\r
}\r
- if (focusedOkButton) {\r
- focusedOkButton = false;\r
+ if (focusedOkButton()) {\r
ckb[focusedElement].requestFocusInWindow();\r
return;\r
}\r
focusedElement = Math.max(0, focusedElement-3);\r
ckb[focusedElement].requestFocusInWindow();\r
}\r
- else if (code == KeyEvent.VK_KP_DOWN || code == KeyEvent.VK_DOWN) {\r
- if (focusedOkButton) {\r
+ else if (code == KeyEvent.VK_KP_DOWN || code == KeyEvent.VK_DOWN || code == KeyEvent.VK_J) {\r
+ if (focusedTabPane()) {\r
+ btnClear.requestFocusInWindow();\r
return;\r
}\r
- if (focusedClearButton) {\r
- focusedClearButton = false;\r
+ if (focusedOkButton()) {\r
+ return;\r
+ }\r
+ if (focusedClearButton()) {\r
+ focusedElement = 1;\r
+ System.out.println("focusedElement: "+focusedElement);\r
ckb[focusedElement].requestFocusInWindow();\r
return;\r
}\r
focusedElement = Math.min(8, focusedElement+3);\r
ckb[focusedElement].requestFocusInWindow();\r
}\r
- else if (code == KeyEvent.VK_KP_LEFT || code == KeyEvent.VK_LEFT) {\r
- if (focusedElement%3 == 0 || focusedOkButton || focusedClearButton) {\r
+ else if (code == KeyEvent.VK_KP_LEFT || code == KeyEvent.VK_LEFT || code == KeyEvent.VK_H) {\r
+ if (focusedElement%3 == 0 || btnConfirm.hasFocus() || btnClear.hasFocus()) {\r
+ System.out\r
+ .println("SelectMemosPanel.InnerKeyListener.keyPressed() OK or CLEAR has focus");\r
return;\r
}\r
focusedElement = Math.max(0, focusedElement-1);\r
ckb[focusedElement].requestFocusInWindow();\r
}\r
- else if (code == KeyEvent.VK_KP_RIGHT || code == KeyEvent.VK_RIGHT) {\r
- if (focusedElement%3 == 2 || focusedOkButton || focusedClearButton) {\r
+ else if (code == KeyEvent.VK_KP_RIGHT || code == KeyEvent.VK_RIGHT || code == KeyEvent.VK_L) {\r
+ if (focusedElement%3 == 2 || focusedOkButton() || focusedClearButton()) {\r
return;\r
}\r
focusedElement = Math.min(8, focusedElement+1);\r
}\r
}\r
\r
+ private boolean focusedTabPane() {\r
+ return parent.getTabbedPane().hasFocus();\r
+ }\r
+\r
@Override\r
public void keyReleased(KeyEvent ke) {\r
- int code = ke.getKeyCode();\r
- if (code == KeyEvent.VK_SPACE) {\r
+ if (!isTabSelected()) {\r
+ return;\r
}\r
- else if (code == KeyEvent.VK_ENTER) {\r
+ int code = ke.getKeyCode();\r
+ if (code == KeyEvent.VK_ENTER) {\r
+ if (focusedClearButton() || focusedOkButton()) {\r
+ /*\r
+ * Buttons actions are managing this so Nothing to do.\r
+ */\r
+ return;\r
+ }\r
+ parent.memosPanelConfirmed();\r
}\r
}\r
\r
\r
@Override\r
public void focusGained(FocusEvent e) {\r
- focusedClearButton = false;\r
- focusedOkButton = false;\r
\r
Component comp = e.getComponent();\r
if (comp == ckb[focusedElement]) {\r
return;\r
}\r
}\r
- if (comp == btnClear) {\r
- focusedClearButton = true;\r
- focusedElement = focusedElement%3;\r
- return;\r
- }\r
- if (comp == btnConfirm) {\r
- focusedOkButton = true;\r
- focusedElement = 6 + focusedElement%3;\r
- return;\r
- }\r
+// if (comp == btnClear) {\r
+// focusedElement = focusedElement%3;\r
+// return;\r
+// }\r
+// if (comp == btnConfirm) {\r
+// focusedElement = 6 + focusedElement%3;\r
+// return;\r
+// }\r
+// if (comp == parent.getTabbedPane()) {\r
+// System.out\r
+// .println("SelectMemosPanel.InnerFocusListener.focusGained() gettabbedpane.hasFocus():"+parent.getTabbedPane().hasFocus());\r
+// focusedElement = 1;\r
+// return;\r
+// }\r
}\r
}\r
\r
+ private boolean focusedOkButton() {\r
+ return btnConfirm.hasFocus();\r
+ }\r
+\r
+ private boolean focusedClearButton() {\r
+ return btnClear.hasFocus();\r
+ }\r
}\r
\r
import java.awt.BorderLayout;\r
import java.awt.Component;\r
-import java.awt.Container;\r
import java.awt.Font;\r
-import java.awt.Frame;\r
import java.awt.GridLayout;\r
import java.awt.event.FocusAdapter;\r
import java.awt.event.FocusEvent;\r
import java.awt.event.KeyEvent;\r
\r
import javax.swing.JButton;\r
-import javax.swing.JDialog;\r
import javax.swing.JPanel;\r
\r
-/*\r
- * InputDialog.java\r
- *\r
- * Created on Mar 25, 2011, 5:50:15 PM\r
- */\r
-\r
/**\r
*\r
* @author svedrenne\r
private JPanel panel456 = new JPanel(new GridLayout());\r
private JPanel panel123 = new JPanel(new GridLayout());\r
private byte previousValue = 0;\r
- \r
+\r
private InnerKeyListener innerKeyListener = new InnerKeyListener();\r
private int focusedElement = 4;\r
private InnerFocusListener innerFocusListener = new InnerFocusListener();\r
this.previousValue = previousValue;\r
initComponents();\r
btns[focusedElement].requestFocusInWindow();\r
+ parent.getTabbedPane().addKeyListener(innerKeyListener);\r
+ parent.getTabbedPane().addFocusListener(innerFocusListener);\r
}\r
\r
private void configureButton(JButton btn, String text, final int value) {\r
panel123.add(btn3, BorderLayout.LINE_END);\r
}\r
\r
- private void buttonClicked(int button) {\r
+ private boolean isTabSelected() {\r
+ int idx = parent.getTabbedPane().getSelectedIndex();\r
+ if (idx != 0) {\r
+ System.out.println("SelectNumberPanel.isTabSelected() TAB NOT SELECTED");\r
+ }\r
+ return (idx == 0);\r
+ }\r
+\r
+ private void buttonClicked(int button) {\r
System.out.println("InputDialog.buttonClicked() button:"+button);\r
digit = button;\r
parent.numberPanelConfirmed();\r
private class InnerKeyListener extends KeyAdapter {\r
@Override\r
public void keyPressed(KeyEvent ke) {\r
- System.out.println("SelectMemosDialog.InnerKeyAdapter.keyPressed() ke:"+ke);\r
+ System.out\r
+ .println("SelectNumberPanel keyPressed() ke:"+ke);\r
+ if (focusedTabPane() && isTabSelected()) {\r
+ int code = ke.getKeyCode();\r
+ if (code == KeyEvent.VK_L) {\r
+ System.out.println("NumberPanel tab selected <>HL");\r
+ int index = parent.getTabbedPane().getSelectedIndex();\r
+ int newIndex = (index == 0)?1:0;\r
+ System.out.println("NumberPanel tab selected index:"+index);\r
+ System.out.println("NumberPanel tab selected newIndex:"+newIndex);\r
+ parent.getTabbedPane().setSelectedIndex(newIndex);\r
+ parent.getTabbedPane().requestFocusInWindow();\r
+ return;\r
+ }\r
+ else if (code == KeyEvent.VK_H) {\r
+ return;\r
+ }\r
+ }\r
+ if (!isTabSelected()) {\r
+ return;\r
+ }\r
int code = ke.getKeyCode();\r
- if (code == KeyEvent.VK_KP_DOWN || code == KeyEvent.VK_DOWN) {\r
- if (focusedElement/3 == 0)\r
+ if (code == KeyEvent.VK_KP_DOWN || code == KeyEvent.VK_DOWN || code == KeyEvent.VK_J) {\r
+ if (focusedTabPane()) {\r
+ focusedElement = 7;\r
+ btns[focusedElement].requestFocusInWindow();\r
return;\r
+ }\r
+ if (focusedElement/3 == 0) {\r
+ return;\r
+ }\r
focusedElement = Math.max(0, focusedElement-3);\r
btns[focusedElement].requestFocusInWindow();\r
}\r
- else if (code == KeyEvent.VK_KP_UP || code == KeyEvent.VK_UP) {\r
- if (focusedElement/3 == 2)\r
+ else if (code == KeyEvent.VK_KP_UP || code == KeyEvent.VK_UP || code == KeyEvent.VK_K) {\r
+ if (focusedTabPane()) {\r
+ return;\r
+ }\r
+ if (focusedElement/3 == 2) {\r
+ parent.getTabbedPane().requestFocusInWindow();\r
return;\r
+ }\r
focusedElement = Math.min(8, focusedElement+3);\r
btns[focusedElement].requestFocusInWindow();\r
}\r
- else if (code == KeyEvent.VK_KP_LEFT || code == KeyEvent.VK_LEFT) {\r
- if (focusedElement%3 == 0)\r
+ else if (code == KeyEvent.VK_KP_LEFT || code == KeyEvent.VK_LEFT || code == KeyEvent.VK_H) {\r
+ if (focusedElement%3 == 0) {\r
return;\r
+ }\r
focusedElement = Math.max(0, focusedElement-1);\r
btns[focusedElement].requestFocusInWindow();\r
}\r
- else if (code == KeyEvent.VK_KP_RIGHT || code == KeyEvent.VK_RIGHT) {\r
- if (focusedElement%3 == 2)\r
+ else if (code == KeyEvent.VK_KP_RIGHT || code == KeyEvent.VK_RIGHT || code == KeyEvent.VK_L) {\r
+ if (focusedElement%3 == 2) {\r
return;\r
+ }\r
focusedElement = Math.min(8, focusedElement+1);\r
btns[focusedElement].requestFocusInWindow();\r
}\r
}\r
}\r
\r
- @Override\r
- public void keyReleased(KeyEvent ke) {\r
- System.out.println("SelectMemosDialog.InnerKeyAdapter.keyReleased() ke:"+ke);\r
- int code = ke.getKeyCode();\r
- if (code == KeyEvent.VK_SPACE) {\r
- }\r
- else if (code == KeyEvent.VK_ENTER) {\r
- }\r
+ private boolean focusedTabPane() {\r
+ boolean res = parent.getTabbedPane().hasFocus();\r
+ System.out.println("SelectNumberPanel tabbedPane focused?"+res);\r
+ return res;\r
}\r
\r
- @Override\r
- public void keyTyped(KeyEvent ke) {\r
- System.out.println("SelectMemosDialog.InnerKeyAdapter.keyTyped() ke:"+ke);\r
- }\r
}\r
\r
private class InnerFocusListener extends FocusAdapter {\r
\r
@Override\r
public void focusGained(FocusEvent e) {\r
+\r
Component comp = e.getComponent();\r
if (comp == btns[focusedElement]) {\r
return;\r
return;\r
}\r
}\r
+// if (comp == parent.getTabbedPane()) {\r
+// focusedElement = 7;\r
+// return;\r
+// }\r
}\r
\r
}\r
this.parent = parent;
this.view = view;
- addMouseListener(this.innerMouseListener);
+ addMouseListener(innerMouseListener);
addKeyListener(innerKeyListener);
setPreferredSize(new Dimension(columns[columns.length - 1].getEnd()
- columns[0].getStart() + offX * 2,
System.out.println("SwingGrid.InnerKeyAdapter.keyPressed() ke:"+ke);
int code = ke.getKeyCode();
boolean hasMoved = false;
- if (code == KeyEvent.VK_KP_DOWN || code == KeyEvent.VK_DOWN) {
+ if (code == KeyEvent.VK_KP_DOWN || code == KeyEvent.VK_DOWN || code == KeyEvent.VK_J) {
if (posY < 8) {
posY++;
hasMoved = true;
repaint();
}
}
- else if (code == KeyEvent.VK_KP_UP || code == KeyEvent.VK_UP) {
+ else if (code == KeyEvent.VK_KP_UP || code == KeyEvent.VK_UP || code == KeyEvent.VK_K) {
if (posY > 0) {
posY--;
hasMoved = true;
repaint();
}
}
- else if (code == KeyEvent.VK_KP_LEFT || code == KeyEvent.VK_LEFT) {
+ else if (code == KeyEvent.VK_KP_LEFT || code == KeyEvent.VK_LEFT || code == KeyEvent.VK_H) {
if (posX > 0) {
posX--;
hasMoved = true;
repaint();
}
}
- else if (code == KeyEvent.VK_KP_RIGHT || code == KeyEvent.VK_RIGHT) {
+ else if (code == KeyEvent.VK_KP_RIGHT || code == KeyEvent.VK_RIGHT || code == KeyEvent.VK_L) {
if (posX < 8) {
posX++;
hasMoved = true;
public void keyReleased(KeyEvent ke) {
System.out.println("SwingGrid.InnerKeyAdapter.keyReleased() ke:"+ke);
int code = ke.getKeyCode();
- if (code == KeyEvent.VK_SPACE) {
+ if (code == KeyEvent.VK_SPACE || code == KeyEvent.VK_SHIFT) {
Point pos = getTopLeftPoint(posY, posX);
selectValue(posY, posX, pos.x, pos.y);
}
- else if (code == KeyEvent.VK_SHIFT) {
+ else if (code == KeyEvent.VK_ENTER || code == KeyEvent.VK_ALT) {
Point pos = getTopLeftPoint(posY, posX);
selectMemos(posY, posX, pos.x, pos.y);
}