diff --git a/designer-base/src/main/java/com/fr/base/vcs/DesignerMode.java b/designer-base/src/main/java/com/fr/base/vcs/DesignerMode.java new file mode 100644 index 0000000000..84fcb1546a --- /dev/null +++ b/designer-base/src/main/java/com/fr/base/vcs/DesignerMode.java @@ -0,0 +1,83 @@ +package com.fr.base.vcs; + +import com.fr.design.base.mode.DesignModeContext; + +/** + * 兼容 + * + * @deprecated user {@link com.fr.design.base.mode.DesignerMode} and {@link DesignModeContext} instead + */ +@Deprecated +public enum DesignerMode { + + NORMAL() { + @Override + public void doSwitch() { + DesignModeContext.switchTo(com.fr.design.base.mode.DesignerMode.NORMAL); + } + }, + VCS() { + @Override + public void doSwitch() { + DesignModeContext.switchTo(com.fr.design.base.mode.DesignerMode.VCS); + } + }, + AUTHORITY() { + @Override + public void doSwitch() { + DesignModeContext.switchTo(com.fr.design.base.mode.DesignerMode.AUTHORITY); + } + }; + + abstract void doSwitch(); + + + /** + * @return 是否时版本控制模式 + * @deprecated use {@link DesignModeContext#isVcsMode()} instead + */ + @Deprecated + public static boolean isVcsMode() { + return DesignModeContext.isVcsMode(); + } + + + /** + * 切换设计器模式 + * + * @param mode mode + * @deprecated use {@link DesignModeContext#switchTo(com.fr.design.base.mode.DesignerMode)} instead + */ + @Deprecated + public static void setMode(DesignerMode mode) { + mode.doSwitch(); + } + + /** + * @return 获取当前设计器模式 + * @deprecated use {@link DesignModeContext#getMode()} instead + */ + @Deprecated + public static DesignerMode getMode() { + switch (DesignModeContext.getMode()) { + case VCS: + return VCS; + case AUTHORITY: + return AUTHORITY; + case NORMAL: + default: + return NORMAL; + } + } + + /** + * 是否为权限编辑 + * + * @return 是否为权限编辑 + * @deprecated use {@link DesignModeContext#isAuthorityEditing()} instead + */ + @Deprecated + public static boolean isAuthorityEditing() { + return DesignModeContext.isAuthorityEditing(); + } +} \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/actions/ExitAuthorityEditAction.java b/designer-base/src/main/java/com/fr/design/actions/ExitAuthorityEditAction.java index 9d81481f78..44bd365a25 100644 --- a/designer-base/src/main/java/com/fr/design/actions/ExitAuthorityEditAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/ExitAuthorityEditAction.java @@ -35,7 +35,7 @@ public class ExitAuthorityEditAction extends TemplateComponentAction { } if (DesignerMode.isAuthorityEditing()) { - DesignerMode.setMode(DesignerMode.NORMARL); + DesignerMode.setMode(DesignerMode.NORMAL); WestRegionContainerPane.getInstance().replaceDownPane(TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter())); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshEastPropertiesPane(); DesignerContext.getDesignerFrame().resetToolkitByPlus(tc.getToolBarMenuDockPlus()); diff --git a/designer-base/src/main/java/com/fr/design/actions/edit/CopyAction.java b/designer-base/src/main/java/com/fr/design/actions/edit/CopyAction.java index 568b439f03..397d6ff2c1 100644 --- a/designer-base/src/main/java/com/fr/design/actions/edit/CopyAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/edit/CopyAction.java @@ -5,10 +5,10 @@ package com.fr.design.actions.edit; import com.fr.base.BaseUtils; import com.fr.design.actions.TemplateComponentAction; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.designer.TargetComponent; - -import javax.swing.*; +import javax.swing.KeyStroke; import java.awt.event.KeyEvent; import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; @@ -24,6 +24,7 @@ public class CopyAction extends TemplateComponentAction { this.setMnemonic('C'); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/copy.png")); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER)); + this.setEnabled(!DesignModeContext.isBanCopyAndCut()); } @Override diff --git a/designer-base/src/main/java/com/fr/design/actions/edit/CutAction.java b/designer-base/src/main/java/com/fr/design/actions/edit/CutAction.java index 67ffae2377..aa4fae62dc 100644 --- a/designer-base/src/main/java/com/fr/design/actions/edit/CutAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/edit/CutAction.java @@ -3,14 +3,13 @@ */ package com.fr.design.actions.edit; -import java.awt.event.KeyEvent; - -import javax.swing.KeyStroke; - import com.fr.base.BaseUtils; import com.fr.design.actions.TemplateComponentAction; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.designer.TargetComponent; +import javax.swing.KeyStroke; +import java.awt.event.KeyEvent; import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; @@ -21,13 +20,14 @@ public class CutAction extends TemplateComponentAction { /** * Constructor */ - public CutAction(TargetComponent t) { - super(t); - + public CutAction(TargetComponent t) { + super(t); + this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Cut")); this.setMnemonic('T'); this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/cut.png")); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER)); + this.setEnabled(!DesignModeContext.isBanCopyAndCut()); } @Override diff --git a/designer-base/src/main/java/com/fr/design/base/mode/DesignModeContext.java b/designer-base/src/main/java/com/fr/design/base/mode/DesignModeContext.java new file mode 100644 index 0000000000..843ff4208d --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/base/mode/DesignModeContext.java @@ -0,0 +1,42 @@ +package com.fr.design.base.mode; + +import static com.fr.design.base.mode.DesignerMode.AUTHORITY; + +public class DesignModeContext { + + private static DesignerMode mode = DesignerMode.NORMAL; + + public static void switchTo(DesignerMode mode) { + DesignModeContext.mode = mode; + } + + public static DesignerMode getMode() { + return mode; + } + + /** + * 是否是版本控制模式 + * + * @return 是否是版本控制模式 + */ + public static boolean isVcsMode() { + return mode == DesignerMode.VCS; + } + + /** + * @return 是否是禁止拷贝剪切模式 + */ + public static boolean isBanCopyAndCut() { + return mode == DesignerMode.BAN_COPY_AND_CUT; + } + + + /** + * 是否为权限编辑 + * + * @return 是否为权限编辑 + */ + public static boolean isAuthorityEditing() { + return mode == AUTHORITY; + } +} diff --git a/designer-base/src/main/java/com/fr/design/base/mode/DesignerMode.java b/designer-base/src/main/java/com/fr/design/base/mode/DesignerMode.java new file mode 100644 index 0000000000..b0dd4baafc --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/base/mode/DesignerMode.java @@ -0,0 +1,8 @@ +package com.fr.design.base.mode; + +public enum DesignerMode { + NORMAL, + BAN_COPY_AND_CUT, + VCS, + AUTHORITY +} diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java index 7d9a3d749d..5c262da9de 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java @@ -37,6 +37,7 @@ import com.fr.design.menu.MenuManager; import com.fr.design.menu.ShortCut; import com.fr.design.utils.DesignUtils; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.exception.DecryptTemplateException; import com.fr.file.FILE; import com.fr.file.FILEFactory; import com.fr.file.FileFILE; @@ -65,6 +66,7 @@ import javax.swing.JLayeredPane; import javax.swing.JMenuBar; import javax.swing.JOptionPane; import javax.swing.JPanel; +import javax.swing.UIManager; import javax.swing.WindowConstants; import javax.swing.border.MatteBorder; import java.awt.BorderLayout; @@ -223,7 +225,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta public void mouseReleased(MouseEvent e) { if (DesignerMode.isAuthorityEditing()) { - DesignerMode.setMode(DesignerMode.NORMARL); + DesignerMode.setMode(DesignerMode.NORMAL); WestRegionContainerPane.getInstance().replaceDownPane( TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter())); HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshEastPropertiesPane(); @@ -963,6 +965,17 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta try { openFile(tplFile); + } catch (DecryptTemplateException e) { + JOptionPane.showMessageDialog( + this, + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Encrypt_Decrypt_Exception"), + UIManager.getString("OptionPane.messageDialogTitle"), + JOptionPane.WARNING_MESSAGE, + UIManager.getIcon("OptionPane.errorIcon") + ); + if (this.getSelectedJTemplate() == null) { + addAndActivateJTemplate(); + } } catch (Throwable t) { FineLoggerFactory.getLogger().error(t.getMessage(), t); addAndActivateJTemplate(); diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesktopCardPane.java b/designer-base/src/main/java/com/fr/design/mainframe/DesktopCardPane.java index 26dff260a8..a5f4a72ac7 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesktopCardPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesktopCardPane.java @@ -3,12 +3,14 @@ */ package com.fr.design.mainframe; -import java.awt.*; - - +import com.fr.base.iofile.attr.DesignBanCopyAttrMark; +import com.fr.design.base.mode.DesignModeContext; +import com.fr.design.base.mode.DesignerMode; +import com.fr.design.dialog.BasicPane; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; -import com.fr.design.dialog.BasicPane; + +import java.awt.BorderLayout; /** @@ -17,16 +19,22 @@ import com.fr.design.dialog.BasicPane; */ public class DesktopCardPane extends BasicPane implements TargetModifiedListener { - private static final long serialVersionUID = 1L; - private JTemplate component; + private static final long serialVersionUID = 1L; + private JTemplate component; - protected DesktopCardPane() { - setLayout(new BorderLayout()); - } + protected DesktopCardPane() { + setLayout(new BorderLayout()); + } - protected void showJTemplate(final JTemplate jt) { - DesignerFrameFileDealerPane.getInstance().setCurrentEditingTemplate(jt); - if(component != null) { + protected void showJTemplate(final JTemplate jt) { + // 判断是否切换设计器状态到禁止拷贝剪切 + if (jt.getTarget().getAttrMark(DesignBanCopyAttrMark.XML_TAG) != null) { + DesignModeContext.switchTo(DesignerMode.BAN_COPY_AND_CUT); + } else { + DesignModeContext.switchTo(DesignerMode.NORMAL); + } + DesignerFrameFileDealerPane.getInstance().setCurrentEditingTemplate(jt); + if (component != null) { remove(component); } add(component = jt, BorderLayout.CENTER); @@ -34,18 +42,18 @@ public class DesktopCardPane extends BasicPane implements TargetModifiedListener repaint(); revalidate(); component.requestGridFocus(); - } + } - protected JTemplate getSelectedJTemplate() { - return component; - } + protected JTemplate getSelectedJTemplate() { + return component; + } - @Override - protected String title4PopupWindow() { - return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Desktop"); - } + @Override + protected String title4PopupWindow() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Desktop"); + } - @Override - public void targetModified(TargetModifiedEvent e) { - } + @Override + public void targetModified(TargetModifiedEvent e) { + } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java index d14a066e53..7880d26872 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java @@ -5,6 +5,7 @@ import com.fr.base.FRContext; import com.fr.base.Parameter; import com.fr.base.ScreenResolution; import com.fr.base.io.BaseBook; +import com.fr.base.iofile.attr.DesignBanCopyAttrMark; import com.fr.base.iofile.attr.TemplateIdAttrMark; import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignModelAdapter; @@ -17,6 +18,7 @@ import com.fr.design.actions.edit.UndoAction; import com.fr.design.actions.file.SaveAsTemplateAction; import com.fr.design.actions.file.SaveTemplateAction; import com.fr.design.actions.file.WebPreviewUtils; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.designer.TargetComponent; import com.fr.design.dialog.InformationWarnPane; import com.fr.design.file.HistoryTemplateListPane; @@ -104,6 +106,12 @@ public abstract class JTemplate> public JTemplate(T t, FILE file, boolean isNewFile) { super(t); + // 判断是否切换设计器状态到禁止拷贝剪切 + if (t.getAttrMark(DesignBanCopyAttrMark.XML_TAG) != null) { + DesignModeContext.switchTo(com.fr.design.base.mode.DesignerMode.BAN_COPY_AND_CUT); + } else { + DesignModeContext.switchTo(com.fr.design.base.mode.DesignerMode.NORMAL); + } this.template = t; this.previewType = parserPreviewProvider(t.getPreviewType()); this.editingFILE = file; @@ -117,6 +125,7 @@ public abstract class JTemplate> openTime = System.currentTimeMillis(); process.append(tic.loadProcess(t)); } + } // 刷新右侧属性面板 diff --git a/designer-base/src/main/java/com/fr/file/FileFILE.java b/designer-base/src/main/java/com/fr/file/FileFILE.java index ee92205f50..d5a9beb42e 100644 --- a/designer-base/src/main/java/com/fr/file/FileFILE.java +++ b/designer-base/src/main/java/com/fr/file/FileFILE.java @@ -4,6 +4,7 @@ import com.fr.base.io.XMLEncryptUtils; import com.fr.design.gui.itree.filetree.FileComparator; import com.fr.design.gui.itree.filetree.FileTreeIcon; import com.fr.general.ComparatorUtils; +import com.fr.io.EncryptUtils; import com.fr.stable.StableUtils; import com.fr.stable.project.ProjectConstants; import com.fr.web.session.SessionLocalManager; @@ -185,7 +186,7 @@ public class FileFILE implements FILE { public InputStream asInputStream() throws Exception { InputStream in = new java.io.FileInputStream(file); return file.getName().endsWith(".cpt") || file.getName().endsWith(".frm") - ? XMLEncryptUtils.decodeInputStream(in) : in; + ? XMLEncryptUtils.decodeInputStream(EncryptUtils.decodeInputStream(in)) : in; } /** diff --git a/designer-base/src/main/java/com/fr/file/FileNodeFILE.java b/designer-base/src/main/java/com/fr/file/FileNodeFILE.java index 207c51d24a..7f73fc7081 100644 --- a/designer-base/src/main/java/com/fr/file/FileNodeFILE.java +++ b/designer-base/src/main/java/com/fr/file/FileNodeFILE.java @@ -9,6 +9,7 @@ import com.fr.design.gui.itree.filetree.FileTreeIcon; import com.fr.design.i18n.Toolkit; import com.fr.file.filetree.FileNode; import com.fr.general.ComparatorUtils; +import com.fr.io.EncryptUtils; import com.fr.log.FineLoggerFactory; import com.fr.stable.CoreConstants; import com.fr.stable.StableUtils; @@ -367,7 +368,7 @@ public class FileNodeFILE implements FILE { ); return envPath.endsWith(".cpt") || envPath.endsWith(".frm") - ? XMLEncryptUtils.decodeInputStream(in) : in; + ? XMLEncryptUtils.decodeInputStream(EncryptUtils.decodeInputStream(in)) : in; } /** diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/actions/CopyAction.java b/designer-form/src/main/java/com/fr/design/designer/beans/actions/CopyAction.java index 969f474838..a63ede4c15 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/actions/CopyAction.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/actions/CopyAction.java @@ -1,11 +1,11 @@ package com.fr.design.designer.beans.actions; import com.fr.base.BaseUtils; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.designer.beans.actions.behavior.ComponentEnable; import com.fr.design.mainframe.FormDesigner; - -import javax.swing.*; +import javax.swing.KeyStroke; import java.awt.event.KeyEvent; import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; @@ -19,6 +19,7 @@ public class CopyAction extends FormWidgetEditAction { this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/copy.png")); this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER)); setUpdateBehavior(new ComponentEnable()); + this.setEnabled(!DesignModeContext.isBanCopyAndCut()); } @Override diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/actions/CutAction.java b/designer-form/src/main/java/com/fr/design/designer/beans/actions/CutAction.java index 3b70b0d2a3..23788df780 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/actions/CutAction.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/actions/CutAction.java @@ -1,33 +1,33 @@ package com.fr.design.designer.beans.actions; -import java.awt.event.KeyEvent; - -import javax.swing.KeyStroke; - import com.fr.base.BaseUtils; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.designer.beans.actions.behavior.ComponentEnable; - import com.fr.design.mainframe.FormDesigner; +import javax.swing.KeyStroke; +import java.awt.event.KeyEvent; + import static com.fr.design.gui.syntax.ui.rtextarea.RTADefaultInputMap.DEFAULT_MODIFIER; public class CutAction extends FormWidgetEditAction { - public CutAction(FormDesigner t) { - super(t); - this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Cut")); - this.setMnemonic('T'); - this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/cut.png")); - this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER)); - this.setUpdateBehavior(new ComponentEnable()); - } - - @Override - public boolean executeActionReturnUndoRecordNeeded() { - FormDesigner editPane = getEditingComponent(); - if (editPane == null) { - return false; - } - return editPane.cut(); - } + public CutAction(FormDesigner t) { + super(t); + this.setName(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Edit_Cut")); + this.setMnemonic('T'); + this.setSmallIcon(BaseUtils.readIcon("/com/fr/design/images/m_edit/cut.png")); + this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER)); + this.setUpdateBehavior(new ComponentEnable()); + this.setEnabled(!DesignModeContext.isBanCopyAndCut()); + } + + @Override + public boolean executeActionReturnUndoRecordNeeded() { + FormDesigner editPane = getEditingComponent(); + if (editPane == null) { + return false; + } + return editPane.cut(); + } } \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java index 82ded472ed..b313bc1433 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesigner.java @@ -5,10 +5,18 @@ import com.fr.base.ScreenResolution; import com.fr.base.vcs.DesignerMode; import com.fr.design.DesignState; import com.fr.design.actions.UpdateAction; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.designer.TargetComponent; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.Painter; -import com.fr.design.designer.beans.actions.*; +import com.fr.design.designer.beans.actions.CopyAction; +import com.fr.design.designer.beans.actions.CutAction; +import com.fr.design.designer.beans.actions.FormDeleteAction; +import com.fr.design.designer.beans.actions.MoveDownAction; +import com.fr.design.designer.beans.actions.MoveToBottomAction; +import com.fr.design.designer.beans.actions.MoveToTopAction; +import com.fr.design.designer.beans.actions.MoveUpAction; +import com.fr.design.designer.beans.actions.PasteAction; import com.fr.design.designer.beans.adapters.layout.FRParameterLayoutAdapter; import com.fr.design.designer.beans.events.CreatorEventListenerTable; import com.fr.design.designer.beans.events.DesignerEditListener; @@ -19,7 +27,14 @@ import com.fr.design.designer.beans.location.RootResizeDirection; import com.fr.design.designer.beans.models.AddingModel; import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.beans.models.StateModel; -import com.fr.design.designer.creator.*; +import com.fr.design.designer.creator.XChartEditor; +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XCreatorUtils; +import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWAbsoluteBodyLayout; +import com.fr.design.designer.creator.XWAbsoluteLayout; +import com.fr.design.designer.creator.XWBorderLayout; +import com.fr.design.designer.creator.XWParameterLayout; import com.fr.design.designer.properties.FormWidgetAuthorityEditPane; import com.fr.design.event.DesignerOpenedListener; import com.fr.design.file.HistoryTemplateListPane; @@ -45,16 +60,27 @@ import com.fr.form.ui.container.WBorderLayout; import com.fr.form.ui.container.WFitLayout; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogger; - import com.fr.stable.ArrayUtils; import com.fr.stable.bridge.StableFactory; -import javax.swing.*; +import javax.swing.Action; +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.TransferHandler; import javax.swing.border.Border; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; import javax.swing.tree.TreePath; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Insets; +import java.awt.Point; +import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; import java.lang.reflect.InvocationHandler; @@ -670,7 +696,7 @@ public class FormDesigner extends TargetComponent
implements TreeSelection refreshParameter(); } } else { - for( UpdateAction action : getActions()) { + for (UpdateAction action : getActions()) { action.update(); } } @@ -1343,6 +1369,9 @@ public class FormDesigner extends TargetComponent implements TreeSelection */ @Override public void copy() { + if (DesignModeContext.isBanCopyAndCut()) { + return; + } selectionModel.copySelectedCreator2ClipBoard(); } @@ -1364,6 +1393,9 @@ public class FormDesigner extends TargetComponent implements TreeSelection */ @Override public boolean cut() { + if (DesignModeContext.isBanCopyAndCut()) { + return false; + } selectionModel.cutSelectedCreator2ClipBoard(); return false; } @@ -1482,11 +1514,11 @@ public class FormDesigner extends TargetComponent implements TreeSelection } - public void setResolution(int resolution){ + public void setResolution(int resolution) { this.resolution = resolution; } - public int getResolution(){ + public int getResolution() { return this.resolution; } } diff --git a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java index 381472d38f..bfbe41a72a 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/JForm.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/JForm.java @@ -8,6 +8,7 @@ import com.fr.design.DesignState; import com.fr.design.actions.TemplateParameterAction; import com.fr.design.actions.core.WorkBookSupportable; import com.fr.design.actions.file.export.EmbeddedFormExportExportAction; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.cell.FloatElementsProvider; import com.fr.design.designer.TargetComponent; import com.fr.design.designer.beans.actions.CopyAction; @@ -427,6 +428,9 @@ public class JForm extends JTemplate implements BaseJForm { */ @Override public void copy() { + if (DesignModeContext.isBanCopyAndCut()) { + return; + } this.formDesign.copy(); } @@ -449,6 +453,9 @@ public class JForm extends JTemplate implements BaseJForm { */ @Override public boolean cut() { + if (DesignModeContext.isBanCopyAndCut()) { + return false; + } return this.formDesign.cut(); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java index df9476c716..96fa44c6d4 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/ElementCasePane.java @@ -48,6 +48,7 @@ import com.fr.design.actions.edit.CutAction; import com.fr.design.actions.edit.PasteAction; import com.fr.design.actions.edit.merge.MergeCellAction; import com.fr.design.actions.edit.merge.UnmergeCellAction; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.cell.bar.DynamicScrollBar; import com.fr.design.cell.clipboard.CellElementsClip; import com.fr.design.cell.clipboard.ElementsTransferable; @@ -81,7 +82,6 @@ import com.fr.design.selection.Selectedable; import com.fr.design.selection.SelectionEvent; import com.fr.design.selection.SelectionListener; import com.fr.general.ComparatorUtils; - import com.fr.grid.Grid; import com.fr.grid.GridColumn; import com.fr.grid.GridCorner; @@ -612,6 +612,11 @@ public abstract class ElementCasePane extends Tar * @return 成功返回true */ public boolean cut() { + if (DesignModeContext.isBanCopyAndCut()) { + FineLoggerFactory.getLogger().debug("Prohibit Cut"); + return false; + } + this.copy(); return this.clearAll(); @@ -621,6 +626,9 @@ public abstract class ElementCasePane extends Tar * 复制 */ public void copy() { + if (DesignModeContext.isBanCopyAndCut()) { + return; + } // p:Elements Transferable. ElementsTransferable elementsTransferable = this.transferSelection(); @@ -884,20 +892,22 @@ public abstract class ElementCasePane extends Tar // clearReportPage old values. inputMapAncestor.clear(); actionMap.clear(); - inputMapAncestor.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER), "cut"); - actionMap.put("cut", new AbstractAction() { - public void actionPerformed(ActionEvent evt) { - if (cut()) { - fireTargetModified(); + if (!DesignModeContext.isBanCopyAndCut()) { + inputMapAncestor.put(KeyStroke.getKeyStroke(KeyEvent.VK_X, DEFAULT_MODIFIER), "cut"); + actionMap.put("cut", new AbstractAction() { + public void actionPerformed(ActionEvent evt) { + if (cut()) { + fireTargetModified(); + } } - } - }); - inputMapAncestor.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER), "copy"); - actionMap.put("copy", new AbstractAction() { - public void actionPerformed(ActionEvent evt) { - copy(); - } - }); + }); + inputMapAncestor.put(KeyStroke.getKeyStroke(KeyEvent.VK_C, DEFAULT_MODIFIER), "copy"); + actionMap.put("copy", new AbstractAction() { + public void actionPerformed(ActionEvent evt) { + copy(); + } + }); + } inputMapAncestor.put(KeyStroke.getKeyStroke(KeyEvent.VK_V, DEFAULT_MODIFIER), "paste"); actionMap.put("paste", new AbstractAction() { public void actionPerformed(ActionEvent evt) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java b/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java index f77af4c439..df4b27409d 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java @@ -25,6 +25,7 @@ import com.fr.design.actions.report.ReportParameterAction; import com.fr.design.actions.report.ReportPrintSettingAction; import com.fr.design.actions.report.ReportWatermarkAction; import com.fr.design.actions.report.ReportWebAttrAction; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.cell.bar.DynamicScrollBar; import com.fr.design.constants.UIConstants; import com.fr.design.data.datapane.TableDataTreePane; @@ -568,6 +569,9 @@ public class JWorkBook extends JTemplate { */ @Override public void copy() { + if (DesignModeContext.isBanCopyAndCut()) { + return; + } this.delegate4ToolbarMenuAdapter().copy(); } @@ -578,6 +582,9 @@ public class JWorkBook extends JTemplate { */ @Override public boolean cut() { + if (DesignModeContext.isBanCopyAndCut()) { + return false; + } return this.delegate4ToolbarMenuAdapter().cut(); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/WorkSheetDesigner.java b/designer-realize/src/main/java/com/fr/design/mainframe/WorkSheetDesigner.java index 063fd29f66..c7b22d2970 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/WorkSheetDesigner.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/WorkSheetDesigner.java @@ -6,6 +6,7 @@ import com.fr.design.actions.report.ReportColumnsAction; import com.fr.design.actions.report.ReportEngineAttrAction; import com.fr.design.actions.report.ReportPageAttrAction; import com.fr.design.actions.report.ReportWriteAttrAction; +import com.fr.design.base.mode.DesignModeContext; import com.fr.design.designer.EditingState; import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedListener; @@ -80,6 +81,9 @@ public class WorkSheetDesigner extends ReportComponent extends TargetComponent implements Selectedable, FormECDesignerProvider{ +public class FormElementCaseDesigner extends TargetComponent implements Selectedable, FormECDesignerProvider { protected FormElementCasePaneDelegate elementCasePane; + @Override public FormElementCasePaneDelegate getEditingElementCasePane() { return elementCasePane; @@ -118,9 +118,9 @@ public class FormElementCaseDesigner