-/*******************************************************************************\r
- * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
- * in Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- * VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.g2d.tooltip;\r
-\r
-import java.awt.Frame;\r
-import java.awt.Label;\r
-import java.awt.TextField;\r
-import java.awt.event.FocusEvent;\r
-import java.awt.event.FocusListener;\r
-import java.awt.event.KeyEvent;\r
-import java.awt.event.KeyListener;\r
-\r
-import javax.swing.BoxLayout;\r
-\r
-import org.simantics.g2d.element.IElement;\r
-\r
-public abstract class EditableTextTooltipProvider implements FocusableTooltipProvider {\r
- private Frame frame;\r
- private TextField field;\r
- \r
- @Override\r
- public void showTooltip(final IElement element, int x, int y) {\r
- if (frame != null) {\r
- frame.setVisible(false);\r
- frame.dispose();\r
- frame = null;\r
- }\r
- frame = new Frame(getTooltipText(element));\r
- frame.setFocusableWindowState(false);\r
- frame.setUndecorated(true);\r
- frame.addFocusListener(new FocusListener() {\r
- \r
- @Override\r
- public void focusLost(FocusEvent arg0) {\r
- System.out.println("Lost " + arg0);\r
- \r
- }\r
- \r
- @Override\r
- public void focusGained(FocusEvent arg0) {\r
- System.out.println("Lost " + arg0); \r
- }\r
- });\r
- Label label = new Label("Press 'F9' to focus");\r
- field = new TextField(getTooltipText(element));\r
- field.setFocusable(false);\r
- field.setEditable(false);\r
- field.addKeyListener(new KeyListener() {\r
- \r
- @Override\r
- public void keyTyped(KeyEvent arg0) {\r
- \r
- }\r
- \r
- @Override\r
- public void keyReleased(KeyEvent arg0) {\r
- if (arg0.getKeyCode() == KeyEvent.VK_ENTER) {\r
- setText(element, field.getText());\r
- frame.setVisible(false);\r
- }\r
- }\r
- \r
- @Override\r
- public void keyPressed(KeyEvent arg0) {\r
- \r
- }\r
- });\r
- frame.setLayout(new BoxLayout(frame, BoxLayout.Y_AXIS));\r
- frame.add(label);\r
- frame.add(field);\r
- frame.pack();\r
- frame.setVisible(true);\r
- frame.setLocation(x,y-32);\r
- \r
- }\r
- \r
- @Override\r
- public void hideTooltip(IElement element) {\r
- if (frame != null) {\r
- frame.setVisible(false);\r
- frame.dispose();\r
- frame = null;\r
- }\r
- }\r
- \r
- public void focus() {\r
- frame.setFocusableWindowState(true);\r
- frame.setFocusable(true);\r
- field.setFocusable(true);\r
- field.setEditable(true);\r
- frame.requestFocus();\r
- frame.requestFocusInWindow();\r
- //frame.transferFocus();\r
- System.out.println(field.isFocusOwner() + " " + frame.isFocused());\r
- }\r
- \r
- @Override\r
- public boolean hasFocus() {\r
- return field.isFocusOwner();\r
- }\r
- \r
- public abstract String getTooltipText(IElement element);\r
- \r
- public abstract void setText(IElement element, String text);\r
-\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2007, 2010 Association for Decentralized Information Management
+ * in Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.g2d.tooltip;
+
+import java.awt.Frame;
+import java.awt.Label;
+import java.awt.TextField;
+import java.awt.event.FocusEvent;
+import java.awt.event.FocusListener;
+import java.awt.event.KeyEvent;
+import java.awt.event.KeyListener;
+
+import javax.swing.BoxLayout;
+
+import org.simantics.g2d.element.IElement;
+
+public abstract class EditableTextTooltipProvider implements FocusableTooltipProvider {
+ private Frame frame;
+ private TextField field;
+
+ @Override
+ public void showTooltip(final IElement element, int x, int y) {
+ if (frame != null) {
+ frame.setVisible(false);
+ frame.dispose();
+ frame = null;
+ }
+ frame = new Frame(getTooltipText(element));
+ frame.setFocusableWindowState(false);
+ frame.setUndecorated(true);
+ frame.addFocusListener(new FocusListener() {
+
+ @Override
+ public void focusLost(FocusEvent arg0) {
+ System.out.println("Lost " + arg0);
+
+ }
+
+ @Override
+ public void focusGained(FocusEvent arg0) {
+ System.out.println("Lost " + arg0);
+ }
+ });
+ Label label = new Label("Press 'F9' to focus");
+ field = new TextField(getTooltipText(element));
+ field.setFocusable(false);
+ field.setEditable(false);
+ field.addKeyListener(new KeyListener() {
+
+ @Override
+ public void keyTyped(KeyEvent arg0) {
+
+ }
+
+ @Override
+ public void keyReleased(KeyEvent arg0) {
+ if (arg0.getKeyCode() == KeyEvent.VK_ENTER) {
+ setText(element, field.getText());
+ frame.setVisible(false);
+ }
+ }
+
+ @Override
+ public void keyPressed(KeyEvent arg0) {
+
+ }
+ });
+ frame.setLayout(new BoxLayout(frame, BoxLayout.Y_AXIS));
+ frame.add(label);
+ frame.add(field);
+ frame.pack();
+ frame.setVisible(true);
+ frame.setLocation(x,y-32);
+
+ }
+
+ @Override
+ public void hideTooltip(IElement element) {
+ if (frame != null) {
+ frame.setVisible(false);
+ frame.dispose();
+ frame = null;
+ }
+ }
+
+ public void focus() {
+ frame.setFocusableWindowState(true);
+ frame.setFocusable(true);
+ field.setFocusable(true);
+ field.setEditable(true);
+ frame.requestFocus();
+ frame.requestFocusInWindow();
+ //frame.transferFocus();
+ System.out.println(field.isFocusOwner() + " " + frame.isFocused());
+ }
+
+ @Override
+ public boolean hasFocus() {
+ return field.isFocusOwner();
+ }
+
+ public abstract String getTooltipText(IElement element);
+
+ public abstract void setText(IElement element, String text);
+
+}