From 9b6a37ab1e866d1b5ac9580bdd6eb25514f42422 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 7 Dec 2017 11:27:20 +0800 Subject: [PATCH] =?UTF-8?q?REPORT-4634=20=E7=BB=84=E4=BB=B6=E5=8F=A0?= =?UTF-8?q?=E5=8A=A0=E4=BD=93=E9=AA=8C=E4=BC=98=E5=8C=96=3D>3=3D>=E5=8F=B3?= =?UTF-8?q?=E9=94=AE=E8=8F=9C=E5=8D=95=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/beans/models/SelectionModel.java | 2 +- .../design/designer/creator/XChartEditor.java | 3 ++- .../fr/design/designer/creator/XCreator.java | 19 +++++++++++++++++++ .../design/designer/creator/XElementCase.java | 3 ++- .../designer/creator/XWAbsoluteLayout.java | 3 ++- .../cardlayout/XWCardMainBorderLayout.java | 3 ++- .../mainframe/EditingMouseListener.java | 10 +++++++++- 7 files changed, 37 insertions(+), 6 deletions(-) diff --git a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java index e0236800e..850539781 100644 --- a/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer_form/src/com/fr/design/designer/beans/models/SelectionModel.java @@ -62,7 +62,7 @@ public class SelectionModel { * @param e 鼠标事件 */ public void selectACreatorAtMouseEvent(MouseEvent e) { - if (!InputEventBaseOnOS.isControlDown(e) && !e.isShiftDown()) { + if (e.getButton() == MouseEvent.BUTTON3 || (!InputEventBaseOnOS.isControlDown(e) && !e.isShiftDown())) { // 如果Ctrl或者Shift键盘没有按下,则清除已经选择的组件 selection.reset(); } diff --git a/designer_form/src/com/fr/design/designer/creator/XChartEditor.java b/designer_form/src/com/fr/design/designer/creator/XChartEditor.java index 750e2ae38..260697355 100644 --- a/designer_form/src/com/fr/design/designer/creator/XChartEditor.java +++ b/designer_form/src/com/fr/design/designer/creator/XChartEditor.java @@ -206,7 +206,8 @@ public class XChartEditor extends XBorderStyleWidgetCreator { public void respondClick(EditingMouseListener editingMouseListener,MouseEvent e){ FormDesigner designer = editingMouseListener.getDesigner(); SelectionModel selectionModel = editingMouseListener.getSelectionModel(); - isEditing = e.getClickCount() == 2 || designer.getCursor().getType() == Cursor.HAND_CURSOR; + isEditing = e.getButton() == MouseEvent.BUTTON1 && + (e.getClickCount() == 2 || designer.getCursor().getType() == Cursor.HAND_CURSOR); displayCoverPane(!isEditing); selectionModel.selectACreatorAtMouseEvent(e); diff --git a/designer_form/src/com/fr/design/designer/creator/XCreator.java b/designer_form/src/com/fr/design/designer/creator/XCreator.java index 99f3267d0..cc1546622 100644 --- a/designer_form/src/com/fr/design/designer/creator/XCreator.java +++ b/designer_form/src/com/fr/design/designer/creator/XCreator.java @@ -6,6 +6,7 @@ package com.fr.design.designer.creator; import com.fr.base.BaseUtils; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; +import com.fr.design.designer.beans.actions.*; import com.fr.design.designer.beans.events.DesignerEditor; import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.fun.WidgetPropertyUIProvider; @@ -664,4 +665,22 @@ public abstract class XCreator extends JPanel implements XComponent, XCreatorToo // do nothing } + /** + * 创建右击弹出菜单 + * + */ + public JPopupMenu createPopupMenu(FormDesigner formDesigner) { + JPopupMenu popup = new JPopupMenu(); + popup.add(new CutAction(formDesigner).createMenuItem()); + popup.add(new CopyAction(formDesigner).createMenuItem()); + popup.add(new PasteAction(formDesigner).createMenuItem()); + popup.add(new FormDeleteAction(formDesigner).createMenuItem()); + popup.addSeparator(); + popup.add(new MoveToTopAction(formDesigner).createMenuItem()); + popup.add(new MoveToBottomAction(formDesigner).createMenuItem()); + popup.add(new MoveUpAction(formDesigner).createMenuItem()); + popup.add(new MoveDownAction(formDesigner).createMenuItem()); + return popup; + } + } \ No newline at end of file diff --git a/designer_form/src/com/fr/design/designer/creator/XElementCase.java b/designer_form/src/com/fr/design/designer/creator/XElementCase.java index 75c2bb80d..af58fd991 100644 --- a/designer_form/src/com/fr/design/designer/creator/XElementCase.java +++ b/designer_form/src/com/fr/design/designer/creator/XElementCase.java @@ -302,7 +302,8 @@ public class XElementCase extends XBorderStyleWidgetCreator implements FormEleme private void switchTab(MouseEvent e,EditingMouseListener editingMouseListener){ FormDesigner designer = editingMouseListener.getDesigner(); - if (e.getClickCount() == 2 || designer.getCursor().getType() == Cursor.HAND_CURSOR){ + if (e.getButton() == MouseEvent.BUTTON1 && + (e.getClickCount() == 2 || designer.getCursor().getType() == Cursor.HAND_CURSOR)){ FormElementCaseContainerProvider component = (FormElementCaseContainerProvider) designer.getComponentAt(e); //切换设计器 designer.switchTab(component); diff --git a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java index 852cdf122..58c5f74dd 100644 --- a/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/XWAbsoluteLayout.java @@ -467,7 +467,8 @@ public class XWAbsoluteLayout extends XLayoutContainer { public void respondClick(EditingMouseListener editingMouseListener, MouseEvent e) { FormDesigner designer = editingMouseListener.getDesigner(); SelectionModel selectionModel = editingMouseListener.getSelectionModel(); - boolean isEditing = isEditable() || designer.getCursor().getType() == Cursor.HAND_CURSOR || e.getClickCount() == 2; + boolean isEditing = isEditable() || + e.getButton() == MouseEvent.BUTTON1 && (designer.getCursor().getType() == Cursor.HAND_CURSOR || e.getClickCount() == 2); setEditable(isEditing); selectionModel.selectACreatorAtMouseEvent(e); diff --git a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java index 8f60672ec..57a519080 100644 --- a/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java +++ b/designer_form/src/com/fr/design/designer/creator/cardlayout/XWCardMainBorderLayout.java @@ -246,7 +246,8 @@ public class XWCardMainBorderLayout extends XWBorderLayout{ public void respondClick(EditingMouseListener editingMouseListener,MouseEvent e){ FormDesigner designer = editingMouseListener.getDesigner(); SelectionModel selectionModel = editingMouseListener.getSelectionModel(); - boolean isEditing = designer.getCursor().getType() == Cursor.HAND_CURSOR || e.getClickCount() == 2; + boolean isEditing = e.getButton() == MouseEvent.BUTTON1 && + (designer.getCursor().getType() == Cursor.HAND_CURSOR || e.getClickCount() == 2); setEditable(isEditing); selectionModel.selectACreatorAtMouseEvent(e); diff --git a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java index cad41b913..a6dbc913c 100644 --- a/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java +++ b/designer_form/src/com/fr/design/mainframe/EditingMouseListener.java @@ -17,6 +17,7 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.xpane.ToolTipEditor; import com.fr.design.icon.IconPathConstants; import com.fr.design.utils.ComponentUtils; +import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.LayoutUtils; import com.fr.general.Inter; import com.fr.stable.Constants; @@ -528,8 +529,9 @@ public class EditingMouseListener extends MouseInputAdapter { */ public void mouseClicked(MouseEvent e) { XCreator creator = designer.getComponentAt(e); + boolean isValidButton = e.getButton() == MouseEvent.BUTTON1 || e.getButton() == MouseEvent.BUTTON3; - if (e.getButton() != MouseEvent.BUTTON1 && !creator.acceptType(XCardSwitchButton.class)) { + if (!isValidButton && !creator.acceptType(XCardSwitchButton.class)) { return; } @@ -537,6 +539,12 @@ public class EditingMouseListener extends MouseInputAdapter { if (creator != null) { creator.respondClick(this, e); + if (e.getButton() == MouseEvent.BUTTON3) { + JPopupMenu cellPopupMenu = creator.createPopupMenu(designer); + if (cellPopupMenu != null) { + GUICoreUtils.showPopupMenu(cellPopupMenu, designer, e.getX(), e.getY()); + } + } } creator.doLayout(); LayoutUtils.layoutRootContainer(designer.getRootComponent());