source: josm/trunk/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java@ 4923

Last change on this file since 4923 was 4923, checked in by stoecker, 12 years ago

add new group DIRECT2

  • Property svn:eol-style set to native
File size: 5.2 KB
Line 
1// License: GPL. Copyright 2007 by Immanuel Scholz and others
2package org.openstreetmap.josm.tools;
3
4import java.awt.GraphicsEnvironment;
5import java.awt.event.KeyEvent;
6import java.io.File;
7import java.io.IOException;
8import java.util.HashMap;
9
10import org.openstreetmap.josm.Main;
11
12/**
13 * see PlatformHook.java
14 *
15 * BTW: THIS IS A STUB. See comments below for details.
16 *
17 * Don't write (Main.platform instanceof PlatformHookUnixoid) because other platform
18 * hooks are subclasses of this class.
19 */
20public class PlatformHookUnixoid implements PlatformHook {
21 @Override
22 public void preStartupHook(){
23 }
24
25 @Override
26 public void startupHook() {
27 }
28
29 @Override
30 public void openUrl(String url) throws IOException {
31 String[] programs = {"gnome-open", "kfmclient openURL", "firefox"};
32 for (String program : programs) {
33 try {
34 Runtime.getRuntime().exec(program+" "+url);
35 return;
36 } catch (IOException e) {
37 }
38 }
39 }
40
41 protected void setupGroup(HashMap<Integer, Integer> groups, boolean load, int group, int value) {
42 if(load)
43 groups.put(group, Main.pref.getInteger("shortcut.groups."+group, value));
44 else
45 groups.put(group, value);
46 }
47
48 @Override
49 public HashMap<Integer, Integer> initShortcutGroups(boolean load) {
50 HashMap<Integer, Integer> groups = new HashMap<Integer, Integer>();
51
52 setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_NONE, -1);
53 setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY, KeyEvent.CTRL_DOWN_MASK);
54 setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU, KeyEvent.CTRL_DOWN_MASK);
55 setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT, 0);
56 setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER, KeyEvent.ALT_DOWN_MASK);
57 setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT, 0);
58 setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MNEMONIC,KeyEvent.ALT_DOWN_MASK);
59 setupGroup(groups, load, Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT2, KeyEvent.ALT_DOWN_MASK);
60
61 setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_NONE, -1);
62 setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
63 setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_MENU, KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
64 setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_EDIT, KeyEvent.SHIFT_DOWN_MASK);
65 setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
66 setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT, KeyEvent.SHIFT_DOWN_MASK);
67 setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_MNEMONIC, KeyEvent.ALT_DOWN_MASK);
68 setupGroup(groups, load, Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT2, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
69
70 setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_NONE, -1);
71 setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY, KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK);
72 setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_MENU, KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK);
73 setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_EDIT, KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK);
74 setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_LAYER, KeyEvent.SHIFT_DOWN_MASK);
75 setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT, KeyEvent.CTRL_DOWN_MASK);
76 setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_MNEMONIC, KeyEvent.ALT_DOWN_MASK);
77 setupGroup(groups, load, Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT2, KeyEvent.ALT_DOWN_MASK | KeyEvent.CTRL_DOWN_MASK);
78
79 return groups;
80 }
81
82 @Override
83 public void initSystemShortcuts() {
84 // TODO: Insert system shortcuts here. See Windows and especially OSX to see how to.
85 }
86 /**
87 * This should work for all platforms. Yeah, should.
88 * See PlatformHook.java for a list of reasons why
89 * this is implemented here...
90 */
91 @Override
92 public String makeTooltip(String name, Shortcut sc) {
93 String result = "";
94 result += "<html>";
95 result += name;
96 if (sc != null && sc.getKeyText().length() != 0) {
97 result += " ";
98 result += "<font size='-2'>";
99 result += "("+sc.getKeyText()+")";
100 result += "</font>";
101 }
102 result += "&nbsp;</html>";
103 return result;
104 }
105
106 @Override
107 public String getDefaultStyle() {
108 return "javax.swing.plaf.metal.MetalLookAndFeel";
109 }
110
111 @Override
112 public boolean canFullscreen()
113 {
114 return GraphicsEnvironment.getLocalGraphicsEnvironment()
115 .getDefaultScreenDevice().isFullScreenSupported();
116 }
117
118 @Override
119 public boolean rename(File from, File to)
120 {
121 return from.renameTo(to);
122 }
123}
Note: See TracBrowser for help on using the repository browser.