Skip to content

Commit

Permalink
reverting last commit breaking QuasiMode
Browse files Browse the repository at this point in the history
  • Loading branch information
edeso committed Feb 16, 2022
1 parent dced2bc commit d439096
Showing 1 changed file with 52 additions and 36 deletions.
Expand Up @@ -33,17 +33,28 @@

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.*;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.Vector;

import javax.swing.KeyStroke;

import org.openjump.core.CheckOS;
import org.openjump.core.ui.plugin.edittoolbox.cursortools.RotateSelectedItemTool;

import com.vividsolutions.jump.workbench.WorkbenchContext;
import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
import com.vividsolutions.jump.workbench.plugin.Configuration;
import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
import com.vividsolutions.jump.workbench.plugin.Extension;
import com.vividsolutions.jump.workbench.plugin.PlugInContext;
import com.vividsolutions.jump.workbench.ui.LayerViewPanel;
import com.vividsolutions.jump.workbench.ui.WorkbenchFrame;
import com.vividsolutions.jump.workbench.ui.cursortool.editing.DeleteVertexTool;
import com.vividsolutions.jump.workbench.ui.cursortool.editing.InsertVertexTool;
import com.vividsolutions.jump.workbench.ui.cursortool.editing.MoveSelectedItemsTool;
Expand All @@ -59,16 +70,12 @@
* "Humane Interfaces" by Jef Raskin.
*/
public class QuasimodeTool extends DelegatingTool {

private final HashMap<ModifierKeySpec,CursorTool> keySpecToToolMap;
//private DummyTool dummytool = new DummyTool();

private HashMap<ModifierKeySpec,CursorTool> keySpecToToolMap;
private DummyTool dummytool = new DummyTool();
// switch defaults on/off
private boolean useDefaults = false;

// map of default tools, keep adding order for documentation later
private final static HashMap<ModifierKeySpec,CursorTool> defaultToolsMap =
new LinkedHashMap<>();
private static HashMap<ModifierKeySpec,CursorTool> defaultToolsMap= new LinkedHashMap();

public static class Setup implements Configuration {
@Override
Expand Down Expand Up @@ -121,12 +128,13 @@ public QuasimodeTool(CursorTool defaultTool) {
private QuasimodeTool(CursorTool defaultTool, final HashMap<ModifierKeySpec,CursorTool> keyMap) {
// set first delegate
super(defaultTool);
this.keySpecToToolMap = (keyMap != null) ? new HashMap<>(keyMap) : new HashMap<>();
this.keySpecToToolMap = (keyMap != null) ? new HashMap<ModifierKeySpec,CursorTool>(keyMap)
: new HashMap<ModifierKeySpec,CursorTool>();
setDefaultTool(defaultTool);
}

public CursorTool getDefaultTool() {
return keySpecToToolMap.get(ModifierKeySpec.DEFAULT);
return (CursorTool) keySpecToToolMap.get(ModifierKeySpec.DEFAULT);
}

public QuasimodeTool add(ModifierKeySpec keySpec, CursorTool tool) {
Expand All @@ -149,17 +157,18 @@ private void setDefaultTool(CursorTool tool) {

// returns a clone with a new default tool
public QuasimodeTool cloneAndSetDefaultTool(CursorTool defaultTool) {
return new QuasimodeTool(defaultTool, keySpecToToolMap);
QuasimodeTool clone = new QuasimodeTool(defaultTool, keySpecToToolMap);
return clone;
}

public String toString(){
StringBuffer buf = new StringBuffer();
for (ModifierKeySpec keys : keySpecToToolMap.keySet()) {
buf.append(keys + "=" + keySpecToToolMap.get(keys) + "\n");
for (ModifierKeySpec keys : (Set<ModifierKeySpec>)keySpecToToolMap.keySet()) {
buf.append(keys + "=" + ((CursorTool)keySpecToToolMap.get(keys)) + "\n");
}
if (useDefaults){
for (ModifierKeySpec keys : defaultToolsMap.keySet()) {
buf.append(keys + "=" + defaultToolsMap.get(keys) + "\n");
for (ModifierKeySpec keys : (Set<ModifierKeySpec>)defaultToolsMap.keySet()) {
buf.append(keys + "=" + ((CursorTool)defaultToolsMap.get(keys)) + "\n");
}
}
return getDefaultTool().getName()+"\n"+buf;
Expand Down Expand Up @@ -195,10 +204,10 @@ private CursorTool getTool(Collection<Integer> keys) {
return tool;
}

private final Map<Integer,Integer> keyTimeMap = new HashMap<>();
private HashMap keyTimeMap = new HashMap();

private final KeyListener keyListener = new KeyListener() {
private Set<Integer> previous = null;
private KeyListener keyListener = new KeyListener() {
private Collection previous = null;

public void keyTyped(KeyEvent e) {
}
Expand All @@ -215,11 +224,11 @@ public void keyReleased(KeyEvent e) {

// one method to rule them all
private void keyStateChanged(KeyEvent e) {
Set<Integer> keys = keyTimeMap.keySet();
Set keys = keyTimeMap.keySet();
// filter out duplicate events (e.g. key stays pressed)
if (previous != null && previous.equals(keys))
return;
previous = keys;
previous = new Vector(keys);
//System.out.println(e.getKeyCode()+"/"+e.getKeyModifiersText(e.getModifiers())+"/"+e.getKeyText(e.getKeyCode()));
setTool(keys);
}
Expand Down Expand Up @@ -294,7 +303,7 @@ private void setTool(Set<Integer> keys) {
}

private LayerViewPanel panel;
//private WorkbenchFrame frame;
private WorkbenchFrame frame;

public void activate(final LayerViewPanel panel) {
if (panel==null) return;
Expand Down Expand Up @@ -333,7 +342,7 @@ private ModifierKeySpec() {
public ModifierKeySpec(int[] keys) {
super();
for (int i : keys) {
add(i);
add(new Integer(i));
}
}

Expand All @@ -358,22 +367,25 @@ public boolean add(Integer e) {
// Mac always uses CMD key instead of CTRL, which is preserved for left
// click context menu, right click emulation
if (e == KeyEvent.VK_CONTROL && CheckOS.isMacOsx()){
e = KeyEvent.VK_META;
e = new Integer(KeyEvent.VK_META);
}
return super.add(e);
return super.add((Integer) e);
}

protected void addAllRaw(Collection<Integer> c) {
for (Integer integer : c) {
super.add(integer);
Iterator<Integer> e = c.iterator();
while (e.hasNext()) {
super.add(e.next());
}
}

public boolean equals(Object obj) {
if (obj instanceof ModifierKeySpec) {
ModifierKeySpec other = (ModifierKeySpec) obj;
// System.out.println("vgl1: "+other+"\nvgl2: "+this);
for (Integer keyval : this) {
Iterator iter = this.iterator();
while (iter.hasNext()) {
Integer keyval = (Integer) iter.next();
if (!other.contains(keyval)) {
// wrong shortcut dude
return false;
Expand All @@ -390,20 +402,22 @@ public boolean equals(Object obj) {
}

public KeyStroke toKeyStroke(){
Iterator iter = this.iterator();
// iterate over pressed keys, generate
int modifiers = 0, keys = 0;
for (Integer keyval : this) {
if (keyval == KeyEvent.VK_SHIFT) {
while (iter.hasNext()) {
Integer keyval = (Integer) iter.next();
if (keyval==KeyEvent.VK_SHIFT){
modifiers |= KeyEvent.SHIFT_MASK;
} else if (keyval == KeyEvent.VK_CONTROL) {
}else if (keyval==KeyEvent.VK_CONTROL){
modifiers |= KeyEvent.CTRL_MASK;
} else if (keyval == KeyEvent.VK_META) {
}else if (keyval==KeyEvent.VK_META){
modifiers |= KeyEvent.META_MASK;
} else if (keyval == KeyEvent.VK_ALT) {
}else if (keyval==KeyEvent.VK_ALT){
modifiers |= KeyEvent.ALT_MASK;
} else if (keyval == KeyEvent.VK_ALT_GRAPH) {
}else if (keyval==KeyEvent.VK_ALT_GRAPH){
modifiers |= KeyEvent.ALT_GRAPH_MASK;
} else {
}else{
keys |= keyval;
}
}
Expand All @@ -413,10 +427,12 @@ public KeyStroke toKeyStroke(){

public String toString() {
String out = "";
Iterator iter = this.iterator();
// iterate over pressed keys, generate
for (Integer keyval : this) {
while (iter.hasNext()) {
Integer keyval = (Integer) iter.next();
String keyDesc = KeyEvent.getKeyText(keyval);
out += out.length() > 0 ? "+" + keyDesc : keyDesc;
out += out.length()>0? "+"+keyDesc : keyDesc;
}
return out;
}
Expand Down

0 comments on commit d439096

Please sign in to comment.