Browse Source

REPORT-2773 mac中复制快捷键的修复

master
hzzz 8 years ago
parent
commit
89564565cd
  1. 24
      designer_base/src/com/fr/design/gui/ilist/UIList.java
  2. 8
      designer_base/src/com/fr/design/gui/itextarea/UITextArea.java
  3. 8
      designer_base/src/com/fr/design/gui/itextfield/UITextField.java
  4. 60
      designer_base/src/com/fr/design/gui/itree/checkboxtree/CheckBoxTree.java

24
designer_base/src/com/fr/design/gui/ilist/UIList.java

@ -6,14 +6,10 @@ import com.fr.design.mainframe.JTemplate;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.*; import javax.swing.*;
import javax.swing.text.DefaultEditorKit;
import java.awt.*; import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.Vector; import java.util.Vector;
import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER;
/** /**
* Created with IntelliJ IDEA. * Created with IntelliJ IDEA.
* User: pony * User: pony
@ -21,20 +17,11 @@ import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_M
* Time: 上午11:07 * Time: 上午11:07
* To change this template use File | Settings | File Templates. * To change this template use File | Settings | File Templates.
*/ */
public class UIList extends JList{ public class UIList extends JList {
private Icon icon; private Icon icon;
public UIList() { public UIList() {
super(); super();
InputMap inputMap = this.getInputMap();
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, DEFAULT_MODIFIER),
DefaultEditorKit.selectAllAction);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER),
DefaultEditorKit.copyAction);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, DEFAULT_MODIFIER),
DefaultEditorKit.pasteAction);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER),
DefaultEditorKit.cutAction);
} }
public UIList(ListModel dataModel) { public UIList(ListModel dataModel) {
@ -59,12 +46,12 @@ public class UIList extends JList{
if (rendererComp.getPreferredSize().width > getVisibleRect().width) { if (rendererComp.getPreferredSize().width > getVisibleRect().width) {
String tips = (rendererComp instanceof JComponent) ? ((JComponent) rendererComp).getToolTipText() : null; String tips = (rendererComp instanceof JComponent) ? ((JComponent) rendererComp).getToolTipText() : null;
if (tips == null) { if (tips == null) {
if(value instanceof JTemplate){ if (value instanceof JTemplate) {
tips = ((JTemplate) value).getEditingFILE().getName(); tips = ((JTemplate) value).getEditingFILE().getName();
icon = ((JTemplate) value).getEditingFILE().getIcon(); icon = ((JTemplate) value).getEditingFILE().getIcon();
} else if (value instanceof ListModelElement || value instanceof TableProcedure){ } else if (value instanceof ListModelElement || value instanceof TableProcedure) {
tips = ((JLabel)rendererComp).getText(); tips = ((JLabel) rendererComp).getText();
icon = ((JLabel)rendererComp).getIcon(); icon = ((JLabel) rendererComp).getIcon();
} }
} }
return tips; return tips;
@ -84,6 +71,7 @@ public class UIList extends JList{
} }
return null; return null;
} }
public JToolTip createToolTip() { public JToolTip createToolTip() {
UIToolTip tip = new UIToolTip(icon); UIToolTip tip = new UIToolTip(icon);
tip.setComponent(this); tip.setComponent(this);

8
designer_base/src/com/fr/design/gui/itextarea/UITextArea.java

@ -19,13 +19,13 @@ public class UITextArea extends JTextArea implements UIObserver {
public UITextArea(int i, int j) { public UITextArea(int i, int j) {
super(i, j); super(i, j);
InputMap inputMap = this.getInputMap(); InputMap inputMap = this.getInputMap();
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, DEFAULT_MODIFIER), inputMap.getParent().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, DEFAULT_MODIFIER),
DefaultEditorKit.selectAllAction); DefaultEditorKit.selectAllAction);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER), inputMap.getParent().put(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER),
DefaultEditorKit.copyAction); DefaultEditorKit.copyAction);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, DEFAULT_MODIFIER), inputMap.getParent().put(KeyStroke.getKeyStroke(KeyEvent.VK_V, DEFAULT_MODIFIER),
DefaultEditorKit.pasteAction); DefaultEditorKit.pasteAction);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER), inputMap.getParent().put(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER),
DefaultEditorKit.cutAction); DefaultEditorKit.cutAction);
initComponents(); initComponents();
} }

8
designer_base/src/com/fr/design/gui/itextfield/UITextField.java

@ -33,13 +33,13 @@ public class UITextField extends JTextField implements UIObserver, GlobalNameObs
public UITextField() { public UITextField() {
super(); super();
InputMap inputMap = this.getInputMap(); InputMap inputMap = this.getInputMap();
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, DEFAULT_MODIFIER), inputMap.getParent().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, DEFAULT_MODIFIER),
DefaultEditorKit.selectAllAction); DefaultEditorKit.selectAllAction);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER), inputMap.getParent().put(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER),
DefaultEditorKit.copyAction); DefaultEditorKit.copyAction);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, DEFAULT_MODIFIER), inputMap.getParent().put(KeyStroke.getKeyStroke(KeyEvent.VK_V, DEFAULT_MODIFIER),
DefaultEditorKit.pasteAction); DefaultEditorKit.pasteAction);
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER), inputMap.getParent().put(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER),
DefaultEditorKit.cutAction); DefaultEditorKit.cutAction);
initListener(); initListener();
} }

60
designer_base/src/com/fr/design/gui/itree/checkboxtree/CheckBoxTree.java

@ -5,8 +5,14 @@
*/ */
package com.fr.design.gui.itree.checkboxtree; package com.fr.design.gui.itree.checkboxtree;
import java.awt.Component; import com.fr.design.gui.icheckbox.UICheckBox;
import java.awt.Rectangle;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.text.Position;
import javax.swing.tree.*;
import java.awt.*;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.KeyListener; import java.awt.event.KeyListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
@ -16,19 +22,6 @@ import java.beans.PropertyChangeListener;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Vector; import java.util.Vector;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.text.DefaultEditorKit;
import javax.swing.text.Position;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.TreeCellRenderer;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import com.fr.design.gui.icheckbox.UICheckBox;
import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER;
/** /**
@ -39,11 +32,11 @@ import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_M
* select one or several tree nodes and press SPACE key to toggle the * select one or several tree nodes and press SPACE key to toggle the
* check box selection for all selected tree nodes. * check box selection for all selected tree nodes.
* <p/> * <p/>
* In order to retrieve which tree paths are selected, you need to call * In order to retrieve which tree paths are selected, you need to call
* {@link #getCheckBoxTreeSelectionModel()}. * {@link #getCheckBoxTreeSelectionModel()}.
* It will return the selection model that keeps track of which tree * It will return the selection model that keeps track of which tree
* paths have been checked. For example * paths have been checked. For example
* {@link CheckBoxTreeSelectionModel#getSelectionPaths()} * {@link CheckBoxTreeSelectionModel#getSelectionPaths()}
* will give the list of paths which have * will give the list of paths which have
* been checked. * been checked.
*/ */
@ -90,8 +83,7 @@ public class CheckBoxTree extends JTree {
public CheckBoxTree(TreeModel newModel) { public CheckBoxTree(TreeModel newModel) {
super(newModel); super(newModel);
InputMap inputMap = this.getInputMap(); InputMap inputMap = this.getInputMap();
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, DEFAULT_MODIFIER), inputMap.getParent().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, DEFAULT_MODIFIER), "selectAll");
"selectAll");
init(); init();
} }
@ -116,7 +108,7 @@ public class CheckBoxTree extends JTree {
addPropertyChangeListener(JTree.SELECTION_MODEL_PROPERTY, _modelChangeListener); addPropertyChangeListener(JTree.SELECTION_MODEL_PROPERTY, _modelChangeListener);
updateRowMapper(); updateRowMapper();
} }
/** /**
* Inserts the mouse listener at the particular index in the listeners' chain. * Inserts the mouse listener at the particular index in the listeners' chain.
* *
@ -127,7 +119,7 @@ public class CheckBoxTree extends JTree {
private void insertMouseListener(Component component, MouseListener l, int index) { private void insertMouseListener(Component component, MouseListener l, int index) {
MouseListener[] listeners = component.getMouseListeners(); MouseListener[] listeners = component.getMouseListeners();
for (int i = 0, length = listeners.length; i < length; i++) { for (int i = 0, length = listeners.length; i < length; i++) {
component.removeMouseListener(listeners[i]); component.removeMouseListener(listeners[i]);
} }
// for (MouseListener listener : listeners) { // for (MouseListener listener : listeners) {
// component.removeMouseListener(listener); // component.removeMouseListener(listener);
@ -173,7 +165,7 @@ public class CheckBoxTree extends JTree {
* Gets the cell renderer with check box. * Gets the cell renderer with check box.
* *
* @return CheckBoxTree's own cell renderer which has the check box. The actual cell renderer * @return CheckBoxTree's own cell renderer which has the check box. The actual cell renderer
* you set by setCellRenderer() can be accessed by using {@link #getActualCellRenderer()}. * you set by setCellRenderer() can be accessed by using {@link #getActualCellRenderer()}.
*/ */
public TreeCellRenderer getCellRenderer() { public TreeCellRenderer getCellRenderer() {
TreeCellRenderer cellRenderer = super.getCellRenderer(); TreeCellRenderer cellRenderer = super.getCellRenderer();
@ -182,8 +174,7 @@ public class CheckBoxTree extends JTree {
} }
if (_treeCellRenderer == null) { if (_treeCellRenderer == null) {
_treeCellRenderer = createCellRenderer(cellRenderer); _treeCellRenderer = createCellRenderer(cellRenderer);
} } else {
else {
_treeCellRenderer.setActualTreeRenderer(cellRenderer); _treeCellRenderer.setActualTreeRenderer(cellRenderer);
} }
return _treeCellRenderer; return _treeCellRenderer;
@ -199,8 +190,7 @@ public class CheckBoxTree extends JTree {
public TreeCellRenderer getActualCellRenderer() { public TreeCellRenderer getActualCellRenderer() {
if (_treeCellRenderer != null) { if (_treeCellRenderer != null) {
return _treeCellRenderer.getActualTreeRenderer(); return _treeCellRenderer.getActualTreeRenderer();
} } else {
else {
return super.getCellRenderer(); return super.getCellRenderer();
} }
} }
@ -255,8 +245,7 @@ public class CheckBoxTree extends JTree {
if (clicksInCheckBox(e, path)) { if (clicksInCheckBox(e, path)) {
return path; return path;
} } else {
else {
return null; return null;
} }
} }
@ -264,13 +253,11 @@ public class CheckBoxTree extends JTree {
protected boolean clicksInCheckBox(MouseEvent e, TreePath path) { protected boolean clicksInCheckBox(MouseEvent e, TreePath path) {
if (!_tree.isCheckBoxVisible(path)) { if (!_tree.isCheckBoxVisible(path)) {
return false; return false;
} } else {
else {
Rectangle bounds = _tree.getPathBounds(path); Rectangle bounds = _tree.getPathBounds(path);
if (_tree.getComponentOrientation().isLeftToRight()) { if (_tree.getComponentOrientation().isLeftToRight()) {
return e.getX() < bounds.x + _hotspot; return e.getX() < bounds.x + _hotspot;
} } else {
else {
return e.getX() > bounds.x + bounds.width - _hotspot; return e.getX() > bounds.x + bounds.width - _hotspot;
} }
} }
@ -354,8 +341,7 @@ public class CheckBoxTree extends JTree {
selectionModel.removeSelectionPath(path); selectionModel.removeSelectionPath(path);
else else
selectionModel.addSelectionPath(path); selectionModel.addSelectionPath(path);
} } finally {
finally {
if (!selectionModel.isSingleEventMode()) { if (!selectionModel.isSingleEventMode()) {
selectionModel.setBatchMode(false); selectionModel.setBatchMode(false);
} }
@ -370,8 +356,8 @@ public class CheckBoxTree extends JTree {
return; return;
} }
for (int i = 0, length = treePaths.length; i < length; i++) { for (int i = 0, length = treePaths.length; i < length; i++) {
TreePath tmpTreePath = treePaths[i]; TreePath tmpTreePath = treePaths[i];
toggleSelection(tmpTreePath); toggleSelection(tmpTreePath);
} }
// for (TreePath treePath : treePaths) { // for (TreePath treePath : treePaths) {
// toggleSelection(treePath); // toggleSelection(treePath);

Loading…
Cancel
Save