diff --git a/designer-form/src/main/java/com/fr/design/gui/xpane/TitleInsetImagePane.java b/designer-form/src/main/java/com/fr/design/gui/xpane/TitleInsetImagePane.java index 48d1028e6..2573f6adf 100644 --- a/designer-form/src/main/java/com/fr/design/gui/xpane/TitleInsetImagePane.java +++ b/designer-form/src/main/java/com/fr/design/gui/xpane/TitleInsetImagePane.java @@ -115,13 +115,9 @@ public class TitleInsetImagePane extends JPanel implements UIObserver { @Override public void mouseExited(MouseEvent e) { super.mouseExited(e); - int x = e.getX(); - int y = e.getY(); - if (x <= 0 || getWidth() <= x || y <= 0 || y >= getHeight()) { - imagePreviewOverlayPane.setVisible(false); - imageDeleteButton.setVisible(false); - imageDeleteButton.setEnabled(false); - } + imagePreviewOverlayPane.setVisible(false); + imageDeleteButton.setVisible(false); + imageDeleteButton.setEnabled(false); } }); diff --git a/designer-form/src/main/java/com/fr/design/mainframe/ComponentTree.java b/designer-form/src/main/java/com/fr/design/mainframe/ComponentTree.java index f9a944091..0f39f089f 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/ComponentTree.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/ComponentTree.java @@ -411,6 +411,11 @@ public class ComponentTree extends JTree { if (e.isControlDown() || e.isShiftDown()) { return; } + XCreator currentCreator = designer.getSelectionModel().getSelection().getSelectedCreator(); + // 以当前选中的为准 + if (currentCreator != selectedCreator) { + selectedCreator = currentCreator; + } if (e.getButton() == MouseEvent.BUTTON1 && selectedCreator != null) { showSelectedPopup(selectedCreator); } diff --git a/designer-form/src/main/java/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java b/designer-form/src/main/java/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java index e6217dbf0..9b1097d37 100644 --- a/designer-form/src/main/java/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java +++ b/designer-form/src/main/java/com/fr/design/widget/FormWidgetDefinePaneFactoryBase.java @@ -132,6 +132,10 @@ public class FormWidgetDefinePaneFactoryBase { defineMap.put(widget, appearance); } + public static Appearance getDefinePane(Class widget) { + return defineMap.get(widget); + } + public static RN createWidgetDefinePane(XCreator creator, FormDesigner designer, Widget widget, Operator operator) { if (isExtraXWidget(widget)) { WidgetDefinePane widgetDefinePane = new WidgetDefinePane(creator, designer); diff --git a/designer-realize/src/main/java/com/fr/design/share/SharableManager.java b/designer-realize/src/main/java/com/fr/design/share/SharableManager.java index b84349be4..271625edc 100644 --- a/designer-realize/src/main/java/com/fr/design/share/SharableManager.java +++ b/designer-realize/src/main/java/com/fr/design/share/SharableManager.java @@ -10,14 +10,21 @@ import com.fr.design.mainframe.share.collect.ComponentCollector; import com.fr.design.mainframe.share.collect.SharableCollectorManager; import com.fr.design.mainframe.share.encrypt.clipboard.impl.EncryptSelectionClipboardHandler; import com.fr.design.mainframe.share.encrypt.clipboard.impl.EncryptTransferableClipboardHandler; -import com.fr.design.mainframe.share.ui.block.LocalWidgetBlock; import com.fr.design.mainframe.share.ui.local.LocalWidgetRepoPane; import com.fr.design.mainframe.share.util.ShareComponentUtils; import com.fr.design.share.utils.EffectItemUtils; -import com.fr.form.share.ShareLoader; +import com.fr.design.widget.FormWidgetDefinePaneFactoryBase; +import com.fr.form.share.encrypt.engine.ClazzCreatorFactory; +import com.fr.form.ui.AbstractBorderStyleWidget; +import com.fr.form.ui.ElementCaseEditor; +import com.fr.form.ui.Widget; +import com.fr.form.ui.container.WAbsoluteLayout; +import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout; import com.fr.general.GeneralContext; import com.fr.json.JSONArray; import com.fr.stable.EnvChangedListener; +import com.fr.stable.bridge.BridgeMark; +import com.fr.stable.bridge.StableFactory; import java.util.List; @@ -27,6 +34,7 @@ public class SharableManager { listenEnv(); ClipboardFilter.registerClipboardHandler(EncryptSelectionClipboardHandler.getInstance()); ClipboardFilter.registerClipboardHandler(EncryptTransferableClipboardHandler.getInstance()); + registerSharableEncryptDefinePanes(); } public static void saveTemplate(JTemplate jt) { @@ -61,4 +69,25 @@ public class SharableManager { } }); } + + private static void registerSharableEncryptDefinePane(Class mainClazz) { + String newClazzName = ClazzCreatorFactory.getInstance().createName(mainClazz); + Class newClazz; + try { + newClazz = (Class) Class.forName(newClazzName, false, mainClazz.getClassLoader()); + } catch (Exception e) { + newClazz = (Class) ClazzCreatorFactory.getInstance().newSharableClazz(mainClazz.getClassLoader(), mainClazz); + } + if (FormWidgetDefinePaneFactoryBase.getDefinePane(newClazz) == null) { + FormWidgetDefinePaneFactoryBase.registerDefinePane(newClazz, FormWidgetDefinePaneFactoryBase.getDefinePane(mainClazz)); + } + + } + + private static void registerSharableEncryptDefinePanes() { + registerSharableEncryptDefinePane(ElementCaseEditor.class); + registerSharableEncryptDefinePane(StableFactory.getMarkedClass(BridgeMark.CHART_EDITOR, AbstractBorderStyleWidget.class)); + registerSharableEncryptDefinePane(WAbsoluteLayout.class); + registerSharableEncryptDefinePane(WCardMainBorderLayout.class); + } }