set look and feel only when it is different from the previous

This commit is contained in:
honfika@gmail.com
2015-05-25 14:49:10 +02:00
parent 48b90ec8da
commit 134fd1558a
6 changed files with 229 additions and 195 deletions

View File

@@ -34,6 +34,7 @@ import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.KeyEventDispatcher;
import java.awt.KeyboardFocusManager;
import java.awt.ScrollPane;
import java.awt.event.ActionEvent;
@@ -63,6 +64,8 @@ public abstract class MainFrameMenu implements MenuBuilder {
private final MainFrame mainFrame;
private KeyEventDispatcher keyEventDispatcher;
private SWF swf;
public boolean isInternalFlashViewerSelected() {
@@ -664,42 +667,7 @@ public abstract class MainFrameMenu implements MenuBuilder {
private void registerHotKeys() {
KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
manager.addKeyEventDispatcher((KeyEvent e) -> {
if (((JFrame) mainFrame).isActive() && e.getID() == KeyEvent.KEY_PRESSED) {
int code = e.getKeyCode();
if (e.isControlDown() && e.isShiftDown()) {
switch (code) {
case KeyEvent.VK_O:
return openActionPerformed(null);
case KeyEvent.VK_S:
return saveActionPerformed(null);
case KeyEvent.VK_A:
return saveAsActionPerformed(null);
case KeyEvent.VK_F:
return search(null, false);
case KeyEvent.VK_T:
return search(null, true);
case KeyEvent.VK_R:
return reloadActionPerformed(null);
case KeyEvent.VK_X:
return closeAllActionPerformed(null);
case KeyEvent.VK_D:
return clearLog();
case KeyEvent.VK_E:
return export(false);
}
} else if (e.isControlDown() && !e.isShiftDown()) {
switch (code) {
case KeyEvent.VK_UP:
return previousTag();
case KeyEvent.VK_DOWN:
return nextTag();
}
}
}
return false;
});
manager.addKeyEventDispatcher(keyEventDispatcher = this::dispatchKeyEvent);
}
public void createMenuBar() {
@@ -1014,4 +982,46 @@ public abstract class MainFrameMenu implements MenuBuilder {
finishMenu("/file/" + (supportsMenuAction() ? "open" : "recent"));
finishMenu("_/open");
}
public void dispose() {
KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
manager.removeKeyEventDispatcher(keyEventDispatcher);
}
public boolean dispatchKeyEvent(KeyEvent e) {
if (((JFrame) mainFrame).isActive() && e.getID() == KeyEvent.KEY_PRESSED) {
int code = e.getKeyCode();
if (e.isControlDown() && e.isShiftDown()) {
switch (code) {
case KeyEvent.VK_O:
return openActionPerformed(null);
case KeyEvent.VK_S:
return saveActionPerformed(null);
case KeyEvent.VK_A:
return saveAsActionPerformed(null);
case KeyEvent.VK_F:
return search(null, false);
case KeyEvent.VK_T:
return search(null, true);
case KeyEvent.VK_R:
return reloadActionPerformed(null);
case KeyEvent.VK_X:
return closeAllActionPerformed(null);
case KeyEvent.VK_D:
return clearLog();
case KeyEvent.VK_E:
return export(false);
}
} else if (e.isControlDown() && !e.isShiftDown()) {
switch (code) {
case KeyEvent.VK_UP:
return previousTag();
case KeyEvent.VK_DOWN:
return nextTag();
}
}
}
return false;
}
}