From c6807c1291f158f00667492e02d2cb49116a4f44 Mon Sep 17 00:00:00 2001 From: hades Date: Mon, 25 Nov 2019 09:26:15 +0800 Subject: [PATCH 01/20] =?UTF-8?q?REPORT-24098=20=E7=A8=B3=E5=AE=9A?= =?UTF-8?q?=E5=85=B1=E5=88=9B=EF=BC=9A=E8=AE=BE=E8=AE=A1=E5=99=A8=E4=B8=80?= =?UTF-8?q?=E6=89=93=E5=BC=80=E6=A8=A1=E6=9D=BF=E5=B0=B1=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=93=8D=E4=BD=9C=EF=BC=8C=E6=9C=AA=E5=81=9A?= =?UTF-8?q?=E4=BB=BB=E4=BD=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/gui/icombocheckbox/UIComboCheckBox.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java b/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java index e570ee515d..340fb20105 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java +++ b/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java @@ -132,8 +132,17 @@ public class UIComboCheckBox extends JComponent implements UIObserver, GlobalNam } private UITextField createEditor() { - UITextField editor = new UITextField(); - editor.setEditable(false); + UITextField editor = new UITextField() { + @Override + protected void initListener() { + this.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + attributeChange(); + } + }); + } + }; editor.setEditable(false); editor.setPreferredSize(new Dimension(110, 20)); addPopupListener(editor); From 76bfd66c40afbebab96991cc05fedf8f88f0edcb Mon Sep 17 00:00:00 2001 From: "Joe.Jiang" Date: Fri, 6 Dec 2019 09:59:12 +0800 Subject: [PATCH 02/20] =?UTF-8?q?REPORT-24270=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=20=E5=8F=8C=E5=87=BB=E5=8D=95=E5=85=83=E6=A0=BC?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=87=BA=E7=8E=B0=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=88=97=E6=A1=86=E4=B8=AD=E7=9A=84=E5=B7=A6=E7=88=B6=E6=A0=BC?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=90=8E=E6=B2=A1=E6=B3=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=BA=E9=BB=98=E8=AE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/expand/ParentPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/expand/ParentPane.java b/designer-realize/src/main/java/com/fr/design/expand/ParentPane.java index e376902185..824e392e64 100644 --- a/designer-realize/src/main/java/com/fr/design/expand/ParentPane.java +++ b/designer-realize/src/main/java/com/fr/design/expand/ParentPane.java @@ -195,7 +195,7 @@ public class ParentPane extends BasicPane { @Override public void actionPerformed(ActionEvent e) { - cardLayout.show(parentCardPane, "Fine-Design_Report_Default"); + cardLayout.show(parentCardPane, "Default"); } }); From 06cb403feb8434502c3d4ad6edae0af2e9119476 Mon Sep 17 00:00:00 2001 From: Maksim Date: Mon, 9 Dec 2019 16:51:15 +0800 Subject: [PATCH 03/20] =?UTF-8?q?=E5=88=9B=E5=BB=BAsocket=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=A4=B1=E8=B4=A5=E9=87=8D=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/socketio/DesignerSocketIO.java | 167 +++++++++++------- 1 file changed, 104 insertions(+), 63 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java b/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java index e2b13b1adf..63bc3d999b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/socketio/DesignerSocketIO.java @@ -13,7 +13,6 @@ import com.fr.report.RemoteDesignConstants; import com.fr.serialization.SerializerHelper; import com.fr.stable.ArrayUtils; import com.fr.third.apache.log4j.spi.LoggingEvent; -import com.fr.third.guava.base.Optional; import com.fr.workspace.WorkContext; import com.fr.workspace.Workspace; import com.fr.workspace.base.WorkspaceConstants; @@ -36,28 +35,19 @@ public class DesignerSocketIO { Disconnecting } - private static Optional socketIO = Optional.absent(); + private static Socket socket = null; private static Status status = Status.Disconnected; + //维护一个当前工作环境的uri列表 + private static String[] uri; + //维护一个关于uri列表的计数器 + private static int count; - private static final Emitter.Listener printLog = new Emitter.Listener() { - @Override - public void call(Object... objects) { - if (ArrayUtils.isNotEmpty(objects)) { - try { - LoggingEvent event = SerializerHelper.deserialize((byte[]) objects[0]); - DesignerLogger.log(event); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - } - } - }; public static void close() { - if (socketIO.isPresent()) { + if (socket != null) { status = Status.Disconnecting; - socketIO.get().close(); - socketIO = Optional.absent(); + socket.close(); + socket = null; } } @@ -66,57 +56,42 @@ public class DesignerSocketIO { if (current.isLocal()) { return; } + //每当更换工作环境,更新uri列表,同时更新计数器count try { - String[] uri = getSocketUri(current); - socketIO = Optional.of(IO.socket(new URI(uri[0]))); - socketIO.get().on(WorkspaceConstants.WS_LOGRECORD, printLog); - socketIO.get().on(WorkspaceConstants.CONFIG_MODIFY, new Emitter.Listener() { - @Override - public void call(Object... objects) { - assert objects != null && objects.length == 1; - String param = (String) objects[0]; - EventDispatcher.fire(RemoteConfigEvent.EDIT, param); - } - }); - socketIO.get().on(Socket.EVENT_DISCONNECT, new Emitter.Listener() { - @Override - public void call(Object... objects) { - /* - * todo 远程心跳断开不一定 socketio 断开 和远程紧密相关的业务都绑定在心跳上,切换成心跳断开之后进行提醒, - * socketio 只用推日志和通知配置变更 - */ - if (status != Status.Disconnecting) { - try { - UIUtil.invokeAndWaitIfNeeded(new Runnable() { - @Override - public void run() { - JOptionPane.showMessageDialog( - DesignerContext.getDesignerFrame(), - Toolkit.i18nText("Fine-Design_Basic_Remote_Disconnected"), - UIManager.getString("OptionPane.messageDialogTitle"), - JOptionPane.ERROR_MESSAGE, - UIManager.getIcon("OptionPane.errorIcon")); - EnvChangeEntrance.getInstance().chooseEnv(); - } - }); - } catch (Exception e) { - FineLoggerFactory.getLogger().error(e.getMessage(), e); - } - } - status = Status.Disconnected; - } - }); - socketIO.get().connect(); - status = Status.Connected; + uri = getSocketUri(); + } catch (IOException e) { + FineLoggerFactory.getLogger().error(e.getMessage(), e); + } + count = 0; + //建立socket并注册监听 + createSocket(); + } + + private static void createSocket(){ + //根据uri和计数器建立连接,并注册监听 + try { + if(count Date: Mon, 9 Dec 2019 19:15:28 +0800 Subject: [PATCH 04/20] =?UTF-8?q?REPORT-24997=20=E5=8D=87=E7=BA=A712.08jar?= =?UTF-8?q?=E5=8C=85=E4=BB=A5=E5=90=8E=E5=86=B3=E7=AD=96=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=B8=AD=E6=8F=92=E5=85=A5=E7=9A=84=E5=9C=B0=E5=9B=BE=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=9C=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/gui/controlpane/UIControlPane.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java index 6319b239bb..6ab6bce56f 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java @@ -12,6 +12,7 @@ import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.widget.FRWidgetFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; +import com.fr.stable.os.OperatingSystem; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; @@ -262,7 +263,9 @@ abstract class UIControlPane extends JControlPane { @Override public void windowLostFocus(WindowEvent e) { //在Linux上拉回焦点,不然导致一些面板关不掉 - requestFocus(); + if(OperatingSystem.isLinux()) { + requestFocus(); + } hideDialog(); } }); From 10c82630ee87b0b64a708a15b65e63a0be56f8cd Mon Sep 17 00:00:00 2001 From: Maksim Date: Mon, 9 Dec 2019 20:12:37 +0800 Subject: [PATCH 05/20] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../socketio/DesignerSocketIOTest.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 designer-realize/src/test/java/com/fr/design/mainframe/socketio/DesignerSocketIOTest.java diff --git a/designer-realize/src/test/java/com/fr/design/mainframe/socketio/DesignerSocketIOTest.java b/designer-realize/src/test/java/com/fr/design/mainframe/socketio/DesignerSocketIOTest.java new file mode 100644 index 0000000000..b775f56e9d --- /dev/null +++ b/designer-realize/src/test/java/com/fr/design/mainframe/socketio/DesignerSocketIOTest.java @@ -0,0 +1,60 @@ +package com.fr.design.mainframe.socketio; + +import com.fr.invoke.Reflect; +import com.fr.workspace.WorkContext; +import com.fr.workspace.Workspace; +import io.socket.client.IO; +import io.socket.client.Socket; + +import org.easymock.EasyMock; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.api.easymock.PowerMock; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + + +/** + * @author: Maksim + * @Date: Created in 2019/12/9 + * @Description: + */ +@RunWith(PowerMockRunner.class) +@PrepareForTest({WorkContext.class,DesignerSocketIO.class, IO.class}) +public class DesignerSocketIOTest { + + @Test + public void close() throws Exception { + this.update(); + DesignerSocketIO.close(); + DesignerSocketIO.Status status = Reflect.on(DesignerSocketIO.class).field("status").get(); + Socket socket = Reflect.on(DesignerSocketIO.class).field("socket").get(); + + Assert.assertEquals(DesignerSocketIO.Status.Disconnecting,status); + Assert.assertNull(socket); + } + + @Test + public void update() throws Exception { + Workspace current = EasyMock.mock(Workspace.class); + EasyMock.expect(current.isLocal()).andReturn(false); + + PowerMock.mockStatic(WorkContext.class); + EasyMock.expect(WorkContext.getCurrent()).andReturn(current); + + String[] uri = {"http://127.0.0.1:8888/workspace","http://127.0.0.1:9999/workspace"}; + PowerMock.mockStaticPartial(DesignerSocketIO.class,"getSocketUri"); + PowerMock.expectPrivate(DesignerSocketIO.class,"getSocketUri").andReturn(uri); + + EasyMock.replay(current); + PowerMock.replayAll(); + + DesignerSocketIO.update(); + DesignerSocketIO.Status status = Reflect.on(DesignerSocketIO.class).field("status").get(); + Socket socket = Reflect.on(DesignerSocketIO.class).field("socket").get(); + + Assert.assertEquals(DesignerSocketIO.Status.Connected,status); + Assert.assertNotNull(socket); + } +} \ No newline at end of file From 69fee8f6786f8b5d11b91dd6391b68bd1c06ff20 Mon Sep 17 00:00:00 2001 From: hades Date: Mon, 9 Dec 2019 20:14:21 +0800 Subject: [PATCH 06/20] =?UTF-8?q?MOBILE-24561=20=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E7=AE=AD=E5=A4=B4=E6=8C=89=E9=92=AE=E8=A7=A6=E5=8F=91=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E6=A1=86=EF=BC=8C=E8=BF=9B=E8=A1=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=8C=E4=BC=9A=E5=AF=BC=E8=87=B4=E4=BF=9D=E5=AD=98=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/icombocheckbox/UIComboCheckBox.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java b/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java index 25be23b2c7..e2a5719d4b 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java +++ b/designer-base/src/main/java/com/fr/design/gui/icombocheckbox/UIComboCheckBox.java @@ -15,6 +15,8 @@ import javax.swing.Icon; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; @@ -149,6 +151,22 @@ public class UIComboCheckBox extends JComponent implements UIObserver, GlobalNam attributeChange(); } }); + UIComboCheckBox.this.popup.addPopupMenuListener(new PopupMenuListener() { + @Override + public void popupMenuWillBecomeVisible(PopupMenuEvent e) { + // do nothing + } + + @Override + public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { + attributeChange(); + } + + @Override + public void popupMenuCanceled(PopupMenuEvent e) { + // do nothing + } + }); } }; editor.setEditable(false); From b291054cc2abdb49e55f9ec07519178e10ef9730 Mon Sep 17 00:00:00 2001 From: pengda Date: Tue, 10 Dec 2019 09:24:46 +0800 Subject: [PATCH 07/20] =?UTF-8?q?REPORT-24997=20=E5=8D=87=E7=BA=A712.08jar?= =?UTF-8?q?=E5=8C=85=E4=BB=A5=E5=90=8E=E5=86=B3=E7=AD=96=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E4=B8=AD=E6=8F=92=E5=85=A5=E7=9A=84=E5=9C=B0=E5=9B=BE=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=9C=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/gui/controlpane/UIControlPane.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java index d47805de96..27934efb79 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java @@ -14,6 +14,7 @@ import com.fr.design.widget.FRWidgetFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; +import com.fr.stable.os.OperatingSystem; import javax.swing.BorderFactory; import javax.swing.JComponent; import javax.swing.JDialog; @@ -268,6 +269,9 @@ abstract class UIControlPane extends JControlPane { addWindowFocusListener(new WindowAdapter() { @Override public void windowLostFocus(WindowEvent e) { + if (OperatingSystem.isLinux()) { + requestFocus(); + } hideDialog(); } }); From c58b21eb637339e06106d75b731f2bf2a3a790b4 Mon Sep 17 00:00:00 2001 From: kerry Date: Tue, 10 Dec 2019 10:22:41 +0800 Subject: [PATCH 08/20] =?UTF-8?q?REPORT-24957=20frm=E6=89=93=E4=B8=8D?= =?UTF-8?q?=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/FRWCardTagLayoutAdapter.java | 39 +++++++++++++++++++ .../creator/cardlayout/XWCardTagLayout.java | 12 ++---- .../layout/FRWCardTagLayoutAdapterTest.java | 23 +++++++++++ .../cardlayout/XWCardTagLayoutTest.java | 18 +++++++++ 4 files changed, 83 insertions(+), 9 deletions(-) create mode 100644 designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRWCardTagLayoutAdapter.java create mode 100644 designer-form/src/test/java/com/fr/design/designer/beans/adapters/layout/FRWCardTagLayoutAdapterTest.java create mode 100644 designer-form/src/test/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayoutTest.java diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRWCardTagLayoutAdapter.java b/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRWCardTagLayoutAdapter.java new file mode 100644 index 0000000000..e5331edd05 --- /dev/null +++ b/designer-form/src/main/java/com/fr/design/designer/beans/adapters/layout/FRWCardTagLayoutAdapter.java @@ -0,0 +1,39 @@ +package com.fr.design.designer.beans.adapters.layout; + +import com.fr.design.designer.creator.XCreator; +import com.fr.design.designer.creator.XLayoutContainer; + +/** + * 针对tabpane的布局适配器 + * Created by kerry on 2019-12-10 + */ +public class FRWCardTagLayoutAdapter extends AbstractLayoutAdapter { + public FRWCardTagLayoutAdapter(XLayoutContainer container) { + super(container); + } + + /** + * 对于这种布局方式,不允许其他组件添加 + * + * @param creator + * @param x + * @param y + */ + @Override + protected void addComp(XCreator creator, int x, int y) { + + } + + /** + * 对于这种布局方式,不允许其他组件添加 + * + * @param creator 组件 + * @param x 添加的位置x,该位置是相对于container的 + * @param y 添加的位置y,该位置是相对于container的 + * @return + */ + @Override + public boolean accept(XCreator creator, int x, int y) { + return false; + } +} diff --git a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java index 77282f63f9..dc8bb90801 100644 --- a/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java +++ b/designer-form/src/main/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayout.java @@ -8,8 +8,7 @@ import com.fr.base.ScreenResolution; import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.LayoutAdapter; -import com.fr.design.designer.beans.adapters.layout.FRHorizontalLayoutAdapter; -import com.fr.design.designer.beans.adapters.layout.FRVerticalLayoutAdapter; +import com.fr.design.designer.beans.adapters.layout.FRWCardTagLayoutAdapter; import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; @@ -311,12 +310,7 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { @Override public LayoutAdapter getLayoutAdapter() { - if (isHori()) { - return new FRHorizontalLayoutAdapter(this); - }else{ - return new FRVerticalLayoutAdapter(this); - } - + return new FRWCardTagLayoutAdapter(this); } private boolean isHori(){ @@ -452,4 +446,4 @@ public class XWCardTagLayout extends XWHorizontalBoxLayout { } } -} \ No newline at end of file +} diff --git a/designer-form/src/test/java/com/fr/design/designer/beans/adapters/layout/FRWCardTagLayoutAdapterTest.java b/designer-form/src/test/java/com/fr/design/designer/beans/adapters/layout/FRWCardTagLayoutAdapterTest.java new file mode 100644 index 0000000000..0ff3ec0cc9 --- /dev/null +++ b/designer-form/src/test/java/com/fr/design/designer/beans/adapters/layout/FRWCardTagLayoutAdapterTest.java @@ -0,0 +1,23 @@ +package com.fr.design.designer.beans.adapters.layout; + +import com.fr.design.designer.creator.XElementCase; +import com.fr.design.designer.creator.cardlayout.XWCardTagLayout; +import com.fr.form.ui.ElementCaseEditor; +import com.fr.form.ui.container.cardlayout.WCardTagLayout; +import org.junit.Assert; +import org.junit.Test; + +import java.awt.Dimension; + +/** + * Created by kerry on 2019-12-10 + */ +public class FRWCardTagLayoutAdapterTest { + @Test + public void testAccept() { + FRWCardTagLayoutAdapter adapter = new FRWCardTagLayoutAdapter( + new XWCardTagLayout(new WCardTagLayout(), new Dimension(100, 100))); + Assert.assertFalse(adapter.accept(new XElementCase( + new ElementCaseEditor(), new Dimension(100, 100)), 1, 1)); + } +} diff --git a/designer-form/src/test/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayoutTest.java b/designer-form/src/test/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayoutTest.java new file mode 100644 index 0000000000..2b5ec78f21 --- /dev/null +++ b/designer-form/src/test/java/com/fr/design/designer/creator/cardlayout/XWCardTagLayoutTest.java @@ -0,0 +1,18 @@ +package com.fr.design.designer.creator.cardlayout; + +import com.fr.form.ui.container.cardlayout.WCardTagLayout; +import org.junit.Assert; +import org.junit.Test; + +import java.awt.Dimension; + +/** + * Created by kerry on 2019-12-10 + */ +public class XWCardTagLayoutTest { + @Test + public void testGetLayoutAdapter() { + XWCardTagLayout tagLayout = new XWCardTagLayout(new WCardTagLayout(), new Dimension(100, 100)); + Assert.assertEquals("com.fr.design.designer.beans.adapters.layout.FRWCardTagLayoutAdapter", tagLayout.getLayoutAdapter().getClass().getName()); + } +} From 4f24288c06c345e9e9eaa70d458b7de2544839bf Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 12 Dec 2019 15:31:50 +0800 Subject: [PATCH 09/20] =?UTF-8?q?REPORT-24117=20=E8=BF=99=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BB=A3=E7=A0=81=E5=9B=9E=E9=80=80=EF=BC=8C=E5=BD=93?= =?UTF-8?q?=E6=97=B6=E7=9A=84bug=20REPORT-21202=E4=BF=AE=E6=94=B9FormSelec?= =?UTF-8?q?tion=E5=B0=B1=E5=8F=AF=E4=BB=A5=E9=81=BF=E5=85=8Dtab=E7=9A=84?= =?UTF-8?q?=E5=A4=8D=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/beans/models/SelectionModel.java | 45 ++++++++++++------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java b/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java index 76eb602300..052ae05390 100644 --- a/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java +++ b/designer-form/src/main/java/com/fr/design/designer/beans/models/SelectionModel.java @@ -18,9 +18,7 @@ import com.fr.design.utils.ComponentUtils; import com.fr.design.utils.gui.LayoutUtils; import com.fr.stable.ArrayUtils; -import java.awt.LayoutManager; -import java.awt.Rectangle; -import java.awt.Toolkit; +import java.awt.*; import java.awt.event.MouseEvent; import java.util.ArrayList; @@ -177,19 +175,36 @@ public class SelectionModel { } private void pasteXWFitLayout() { - //自适应布局编辑器内部左上角第一个坐标点 - int leftUpX = designer.getRootComponent().toData().getMargin().getLeft() + 1; - int leftUpY = designer.getRootComponent().toData().getMargin().getTop() + 1; - //选中第一个坐标点坐在的组件 - selection.setSelectedCreator((XCreator) designer.getRootComponent().getComponentAt(leftUpX, leftUpY)); - Rectangle rectangle = selection.getRelativeBounds(); - if (hasSelectedPasteSource()) { - selectedPaste(); + if (selection.getSelectedCreator().getClass().equals(XWTabFitLayout.class)) { + XLayoutContainer container = (XLayoutContainer) selection.getSelectedCreator(); + //tab布局编辑器内部左上角第一个坐标点 + int leftUpX = container.toData().getMargin().getLeft() + 1; + int leftUpY = container.toData().getMargin().getTop() + 1; + //选中第一个坐标点坐在的组件 + selection.setSelectedCreator((XCreator) container.getComponentAt(leftUpX, leftUpY)); + Rectangle rectangle = selection.getRelativeBounds(); + if (hasSelectedPasteSource()) { + selectedPaste(); + } else { + FormSelectionUtils.paste2Container(designer, container, clipboard, + rectangle.x + rectangle.width / 2, + rectangle.y + DELTA_X_Y); + } } else { - FormSelectionUtils.paste2Container(designer, designer.getRootComponent(), - clipboard, - rectangle.x + rectangle.width / 2, - rectangle.y + DELTA_X_Y); + //自适应布局编辑器内部左上角第一个坐标点 + int leftUpX = designer.getRootComponent().toData().getMargin().getLeft() + 1; + int leftUpY = designer.getRootComponent().toData().getMargin().getTop() + 1; + //选中第一个坐标点坐在的组件 + selection.setSelectedCreator((XCreator) designer.getRootComponent().getComponentAt(leftUpX, leftUpY)); + Rectangle rectangle = selection.getRelativeBounds(); + if (hasSelectedPasteSource()) { + selectedPaste(); + } else { + FormSelectionUtils.paste2Container(designer, designer.getRootComponent(), + clipboard, + rectangle.x + rectangle.width / 2, + rectangle.y + DELTA_X_Y); + } } } From f5148f8323afe4918a5bec2d58d90bf9c42ec5dc Mon Sep 17 00:00:00 2001 From: "Joe.Jiang" Date: Thu, 12 Dec 2019 19:00:08 +0800 Subject: [PATCH 10/20] =?UTF-8?q?REPORT-24787=20=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=EF=BC=8C=E5=8D=95=E5=85=83=E6=A0=BC=E4=B8=8D?= =?UTF-8?q?=E4=BC=9A=E8=B7=9F=E9=9A=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/form/parameter/FormParaDesigner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java b/designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java index bac50642e0..811ddfb2c6 100644 --- a/designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java +++ b/designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java @@ -208,11 +208,11 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP /** * 刷新tableData * - * @param oldName 旧名称 + * @param oldName 旧名称f * @param newName 新名称 */ public void refresh4TableData(String oldName, String newName) { - this.getTarget().renameTableData(oldName, newName); + this.getTarget().renameTableData(this.getTarget().getContainer(), oldName, newName); this.getEditListenerTable().fireCreatorModified(DesignerEvent.CREATOR_SELECTED); } From 1823a7bcbdb1a731071f67352c4667dc19f7a646 Mon Sep 17 00:00:00 2001 From: hades Date: Fri, 13 Dec 2019 09:55:43 +0800 Subject: [PATCH 11/20] =?UTF-8?q?REPORT-24294=20=E5=AE=89=E8=A3=8510?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=90=AF=E5=8A=A8=E4=B9=8B=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E6=93=8D=E4=BD=9C=E5=BC=82=E5=B8=B8=E7=BC=93=E6=85=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/EastRegionContainerPane.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java index 97ce22814d..07191d536d 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java @@ -458,9 +458,14 @@ public class EastRegionContainerPane extends UIEastResizableContainer { } private void refreshContainer() { - validate(); - repaint(); - revalidate(); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + validate(); + repaint(); + revalidate(); + } + }); } public int getToolPaneY() { From f36bfb1cf014f8e0e3e5c9b8dc67cae4a9daabd9 Mon Sep 17 00:00:00 2001 From: "Joe.Jiang" Date: Fri, 13 Dec 2019 10:43:55 +0800 Subject: [PATCH 12/20] =?UTF-8?q?REPORT-24787=20=E5=86=B3=E7=AD=96?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E9=9B=86?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=EF=BC=8C=E5=8D=95=E5=85=83=E6=A0=BC=E4=B8=8D?= =?UTF-8?q?=E4=BC=9A=E8=B7=9F=E9=9A=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/form/parameter/FormParaDesigner.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java b/designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java index 811ddfb2c6..c72aa45128 100644 --- a/designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java +++ b/designer-form/src/main/java/com/fr/design/form/parameter/FormParaDesigner.java @@ -208,7 +208,7 @@ public class FormParaDesigner extends FormDesigner implements ParameterDesignerP /** * 刷新tableData * - * @param oldName 旧名称f + * @param oldName 旧名称 * @param newName 新名称 */ public void refresh4TableData(String oldName, String newName) { From 40e62b014f2aa7f027fc41da1453df158842df3a Mon Sep 17 00:00:00 2001 From: hades Date: Fri, 13 Dec 2019 17:40:22 +0800 Subject: [PATCH 13/20] =?UTF-8?q?REPORT-21556=20=E5=AF=BC=E5=85=A5excel?= =?UTF-8?q?=E4=B8=8D=E6=98=BE=E7=A4=BA=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../javascript/JavaScriptActionPane.java | 41 ++++++++++--------- .../design/javascript/ListenerEditPane.java | 2 +- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java b/designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java index ee1e1905f6..f54b070b0a 100644 --- a/designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java +++ b/designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java @@ -144,30 +144,33 @@ public abstract class JavaScriptActionPane extends UIComboBoxPane { return contentDBManiPane; } - public static JavaScriptActionPane defaultJavaScriptActionPane = new JavaScriptActionPane() { + public static JavaScriptActionPane createDefaultJavaScriptActionPane() { + return new JavaScriptActionPane() { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - @Override - public DBManipulationPane createDBManipulationPane() { - JTemplate jTemplate = DesignerContext.getDesignerFrame().getSelectedJTemplate(); - return jTemplate == null ? new DBManipulationPane() : jTemplate.createDBManipulationPane(); - } + @Override + public DBManipulationPane createDBManipulationPane() { + JTemplate jTemplate = DesignerContext.getDesignerFrame().getSelectedJTemplate(); + return jTemplate == null ? new DBManipulationPane() : jTemplate.createDBManipulationPane(); + } - @Override - protected String title4PopupWindow() { - return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Set_Callback_Function"); - } + @Override + protected String title4PopupWindow() { + return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Set_Callback_Function"); + } - @Override - public boolean isForm() { - return false; - } + @Override + public boolean isForm() { + return false; + } - public String[] getDefaultArgs() { - return new String[0]; - } - }; + @Override + public String[] getDefaultArgs() { + return new String[0]; + } + }; + } /** * 生成界面默认的组建 diff --git a/designer-realize/src/main/java/com/fr/design/javascript/ListenerEditPane.java b/designer-realize/src/main/java/com/fr/design/javascript/ListenerEditPane.java index 5f1f941faa..b89971f879 100644 --- a/designer-realize/src/main/java/com/fr/design/javascript/ListenerEditPane.java +++ b/designer-realize/src/main/java/com/fr/design/javascript/ListenerEditPane.java @@ -81,7 +81,7 @@ public class ListenerEditPane extends BasicBeanPane { // 提交入库 List dbManiList = new ArrayList(); dbManiList.add(autoCreateDBManipulationPane()); - Commit2DBJavaScriptPane commit2DBJavaScriptPane = new Commit2DBJavaScriptPane(JavaScriptActionPane.defaultJavaScriptActionPane, + Commit2DBJavaScriptPane commit2DBJavaScriptPane = new Commit2DBJavaScriptPane(JavaScriptActionPane.createDefaultJavaScriptActionPane(), dbManiList); hyperlinkPane.add(DBCOMMIT, commit2DBJavaScriptPane); // 自定义事件 From 8bccab743c4c91d735d258cc7a460e12825d7198 Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 19 Dec 2019 15:11:07 +0800 Subject: [PATCH 14/20] =?UTF-8?q?REPORT-24206=5F=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=5F=E4=BF=AE=E6=94=B9=E8=BE=B9=E6=A1=86=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=E5=8D=95=E5=85=83=E6=A0=BC=E8=83=8C=E6=99=AF=E9=A2=9C?= =?UTF-8?q?=E8=89=B2=E4=BC=9A=E5=8F=98=E7=BB=9F=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/style/BackgroundPane.java | 5 ++-- .../com/fr/design/gui/style/BorderPane.java | 26 +++++++++---------- .../backgroundpane/BackgroundQuickPane.java | 26 +++++++++++++++++++ .../ColorBackgroundQuickPane.java | 15 ++--------- .../GradientBackgroundQuickPane.java | 13 +++------- .../ImageBackgroundQuickPane.java | 7 +---- .../NullBackgroundQuickPane.java | 4 +++ .../PatternBackgroundQuickPane.java | 19 +++----------- .../TextureBackgroundQuickPane.java | 7 ++--- 9 files changed, 57 insertions(+), 65 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/style/BackgroundPane.java b/designer-base/src/main/java/com/fr/design/gui/style/BackgroundPane.java index 3ad75044c2..88ee482cb8 100644 --- a/designer-base/src/main/java/com/fr/design/gui/style/BackgroundPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/style/BackgroundPane.java @@ -32,7 +32,7 @@ public class BackgroundPane extends AbstractBasicStylePane { protected BackgroundQuickPane[] paneList; //获取当前面板 - protected JPanel currentPane = null; + protected BackgroundQuickPane currentPane = null; public BackgroundPane() { @@ -43,7 +43,6 @@ public class BackgroundPane extends AbstractBasicStylePane { this.setLayout(new BorderLayout(0, 6)); typeComboBox = new UIComboBox(); final CardLayout cardlayout = new CardLayout(); -// this.add(typeComboBox, BorderLayout.NORTH); paneList = supportKindsOfBackgroundUI(); @@ -58,12 +57,12 @@ public class BackgroundPane extends AbstractBasicStylePane { typeComboBox.addItem(pane.title4PopupWindow()); centerPane.add(pane, pane.title4PopupWindow()); } -// this.add(centerPane, BorderLayout.CENTER); typeComboBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { cardlayout.show(centerPane, (String) typeComboBox.getSelectedItem()); + currentPane = paneList[typeComboBox.getSelectedIndex()]; fireStateChanged(); } }); diff --git a/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java b/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java index ce3940bf2a..ea2ed65d5c 100644 --- a/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java @@ -16,11 +16,14 @@ import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.design.mainframe.backgroundpane.BackgroundQuickPane; import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; import com.fr.design.style.color.NewColorSelectBox; +import com.fr.general.Background; import com.fr.stable.Constants; import com.fr.stable.CoreConstants; +import com.fr.stable.StringUtils; import javax.swing.*; import javax.swing.event.ChangeEvent; @@ -28,6 +31,7 @@ import javax.swing.event.ChangeListener; import java.awt.*; import java.util.Arrays; import java.util.HashSet; +import java.util.Set; /** * @author zhou @@ -37,6 +41,7 @@ public class BorderPane extends AbstractBasicStylePane implements GlobalNameObse private static final String[] BORDERARRAY = {"currentLineCombo", "currentLineColorPane", "outerToggleButton", "topToggleButton", "leftToggleButton", "bottomToggleButton", "rightToggleButton", "innerToggleButton", "horizontalToggleButton", "verticalToggleButton"}; + private static final Set BORDER_SET = new HashSet<>(Arrays.asList(BORDERARRAY)); private boolean insideMode = false; private UIToggleButton topToggleButton; @@ -193,25 +198,20 @@ public class BorderPane extends AbstractBasicStylePane implements GlobalNameObse this.verticalToggleButton.setEnabled(this.insideMode); } + @Override public Style update(Style style) { if (style == null) { style = Style.DEFAULT_STYLE; } - CellBorderStyle cellBorderStyle = this.update(); - HashSet borderSet = new HashSet(Arrays.asList(BORDERARRAY)); - style = style.deriveBackground(backgroundPane.update()); - if (backgroundPane.currentPane != backgroundPane.paneList[1]){ - if (borderSet.contains(globalNameListener.getGlobalName())) { - style = style.deriveBorder(cellBorderStyle.getTopStyle(), cellBorderStyle.getTopColor(), cellBorderStyle.getBottomStyle(), cellBorderStyle.getBottomColor(), - cellBorderStyle.getLeftStyle(), cellBorderStyle.getLeftColor(), cellBorderStyle.getRightStyle(), cellBorderStyle.getRightColor()); - } - }else { - if (borderSet.contains(globalNameListener.getGlobalName()) && !((ColorBackgroundQuickPane) backgroundPane.currentPane).isBackGroundColor()){ - style = style.deriveBorder(cellBorderStyle.getTopStyle(), cellBorderStyle.getTopColor(), cellBorderStyle.getBottomStyle(), cellBorderStyle.getBottomColor(), - cellBorderStyle.getLeftStyle(), cellBorderStyle.getLeftColor(), cellBorderStyle.getRightStyle(), cellBorderStyle.getRightColor()); - } + if (backgroundPane.currentPane.isBackgroundChange()) { + style = style.deriveBackground(backgroundPane.update()); + } + if (BORDER_SET.contains(globalNameListener.getGlobalName())) { + CellBorderStyle cellBorderStyle = this.update(); + style = style.deriveBorder(cellBorderStyle.getTopStyle(), cellBorderStyle.getTopColor(), cellBorderStyle.getBottomStyle(), cellBorderStyle.getBottomColor(), + cellBorderStyle.getLeftStyle(), cellBorderStyle.getLeftColor(), cellBorderStyle.getRightStyle(), cellBorderStyle.getRightColor()); } return style; diff --git a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java index 850132d863..99e482355c 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/BackgroundQuickPane.java @@ -2,14 +2,20 @@ package com.fr.design.mainframe.backgroundpane; import com.fr.design.beans.BasicBeanPane; import com.fr.design.event.UIObserver; +import com.fr.design.event.UIObserverListener; import com.fr.general.Background; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + /** * @author zhou * @since 2012-5-29下午1:12:28 */ public abstract class BackgroundQuickPane extends BasicBeanPane implements UIObserver { + private boolean backgroundChange; + public abstract boolean accept(Background background); @Override @@ -23,6 +29,10 @@ public abstract class BackgroundQuickPane extends BasicBeanPane impl public abstract void reset(); + public boolean isBackgroundChange() { + return backgroundChange; + } + /** * 组件是否需要响应添加的观察者事件 * @@ -32,4 +42,20 @@ public abstract class BackgroundQuickPane extends BasicBeanPane impl return true; } + + class ChangeListenerImpl implements ChangeListener { + + private UIObserverListener listener; + + public ChangeListenerImpl(UIObserverListener listener) { + this.listener = listener; + } + + @Override + public void stateChanged(ChangeEvent e) { + backgroundChange = true; + this.listener.doChange(); + backgroundChange = false; + } + } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java index 89c61ec9d0..f9b4c160e5 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/ColorBackgroundQuickPane.java @@ -19,7 +19,6 @@ import java.awt.Color; public class ColorBackgroundQuickPane extends BackgroundQuickPane { private NewColorSelectPane detailColorSelectPane; - private boolean isBackGroundColor; public ColorBackgroundQuickPane() { this.setLayout(FRGUIPaneFactory.createBorderLayout()); @@ -39,7 +38,6 @@ public class ColorBackgroundQuickPane extends BackgroundQuickPane { public void populateColor(Color color) { this.detailColorSelectPane.setColor(color); - isBackGroundColor = false; } public Color updateColor() { @@ -47,23 +45,14 @@ public class ColorBackgroundQuickPane extends BackgroundQuickPane { return this.detailColorSelectPane.getNotNoneColor(); } - public boolean isBackGroundColor() { - return isBackGroundColor; - } - /** * 给组件登记一个观察者监听事件 * * @param listener 观察者监听事件 */ + @Override public void registerChangeListener(final UIObserverListener listener) { - detailColorSelectPane.addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - isBackGroundColor = true; - listener.doChange(); - isBackGroundColor = false; - } - }); + detailColorSelectPane.addChangeListener(new ChangeListenerImpl(listener)); } @Override diff --git a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java index 09be6771cf..6c3ea9e727 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/GradientBackgroundQuickPane.java @@ -96,17 +96,10 @@ public class GradientBackgroundQuickPane extends BackgroundQuickPane { * * @param listener 观察者监听事件 */ + @Override public void registerChangeListener(final UIObserverListener listener) { - gradientBar.addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - directionPane.addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); + gradientBar.addChangeListener(new ChangeListenerImpl(listener)); + directionPane.addChangeListener(new ChangeListenerImpl(listener)); } @Override diff --git a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java index afa6fc9077..e1496ff3d6 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/ImageBackgroundQuickPane.java @@ -127,12 +127,7 @@ public class ImageBackgroundQuickPane extends BackgroundQuickPane { */ @Override public void registerChangeListener(final UIObserverListener listener) { - changeListener = new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }; + changeListener = new ChangeListenerImpl(listener); imageLayoutPane.addChangeListener(changeListener); } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java index 8aa6573f51..9a86a38c11 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/NullBackgroundQuickPane.java @@ -33,6 +33,10 @@ public class NullBackgroundQuickPane extends BackgroundQuickPane { } + @Override + public boolean isBackgroundChange() { + return true; + } /** * 是否接受 diff --git a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java index 9da1344dcd..8f4c2ecfbf 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/PatternBackgroundQuickPane.java @@ -112,23 +112,12 @@ public class PatternBackgroundQuickPane extends BackgroundQuickPane { * * @param listener 观察者监听事件 */ + @Override public void registerChangeListener(final UIObserverListener listener) { - foregroundColorPane.addSelectChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); - backgroundColorPane.addSelectChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); + foregroundColorPane.addSelectChangeListener(new ChangeListenerImpl(listener)); + backgroundColorPane.addSelectChangeListener(new ChangeListenerImpl(listener)); for (int i = 0, count = patternButtonArray.length; i < count; i++) { - patternButtonArray[i].addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); + patternButtonArray[i].addChangeListener(new ChangeListenerImpl(listener)); } } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java index 0d94bf3bce..e9aed06acd 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/backgroundpane/TextureBackgroundQuickPane.java @@ -68,13 +68,10 @@ public class TextureBackgroundQuickPane extends BackgroundQuickPane { * * @param listener 观察者监听事件 */ + @Override public void registerChangeListener(final UIObserverListener listener) { for (int i = 0, count = textureButtonArray.length; i < count; i++) { - textureButtonArray[i].addChangeListener(new ChangeListener() { - public void stateChanged(ChangeEvent e) { - listener.doChange(); - } - }); + textureButtonArray[i].addChangeListener(new ChangeListenerImpl(listener)); } } From 6f27c10428be5070c8292e30788376950693bb30 Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 19 Dec 2019 15:17:35 +0800 Subject: [PATCH 15/20] fix import --- .../src/main/java/com/fr/design/gui/style/BorderPane.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java b/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java index ea2ed65d5c..da0cd32ed5 100644 --- a/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java @@ -16,14 +16,10 @@ import com.fr.design.gui.icombobox.LineComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; -import com.fr.design.mainframe.backgroundpane.BackgroundQuickPane; -import com.fr.design.mainframe.backgroundpane.ColorBackgroundQuickPane; import com.fr.design.style.color.NewColorSelectBox; -import com.fr.general.Background; import com.fr.stable.Constants; import com.fr.stable.CoreConstants; -import com.fr.stable.StringUtils; import javax.swing.*; import javax.swing.event.ChangeEvent; From d9f483da7d23d9a976112b2c4aab5a227d71e09b Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 26 Dec 2019 14:22:49 +0800 Subject: [PATCH 16/20] =?UTF-8?q?REPORT-24604=20=E8=A1=A8=E5=8D=95?= =?UTF-8?q?=E6=8B=96=E5=8A=A8=E5=9B=BE=E8=A1=A8=E4=B8=8E=E7=94=BB=E5=B8=83?= =?UTF-8?q?=E5=9D=97=E4=BA=A4=E5=8F=89=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=8D=A1?= =?UTF-8?q?=E6=AD=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/mainframe/FormDesignerUI.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java index 6e8419f72f..7c2b67352c 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java @@ -23,8 +23,7 @@ import com.fr.page.WatermarkPainter; import com.fr.report.core.ReportUtils; import com.fr.stable.ArrayUtils; -import javax.swing.JComponent; -import javax.swing.SwingUtilities; +import javax.swing.*; import javax.swing.plaf.ComponentUI; import java.awt.AlphaComposite; import java.awt.Component; @@ -65,7 +64,7 @@ public class FormDesignerUI extends ComponentUI { * @param c 组件 */ @Override - public void paint(Graphics g, JComponent c) { + public void paint(final Graphics g, JComponent c) { XCreator rootComponent = designer.getRootComponent(); this.time = (float)designer.getResolution()/ScreenResolution.getScreenResolution(); if (rootComponent != null) { @@ -101,8 +100,14 @@ public class FormDesignerUI extends ComponentUI { if (designer.getPainter() != null) { // ComponentAdapter和LayoutAdapter提供的额外的Painter,该Painter一般用于提示作用, // 相当于一个浮动层, 要考虑参数面板的高度 - designer.getPainter().paint(g, designer.getArea().getHorizontalValue(), - designer.getArea().getVerticalValue() + designer.getParaHeight()); + new SwingWorker() { + @Override + protected Void doInBackground() throws Exception { + designer.getPainter().paint(g, designer.getArea().getHorizontalValue(), + designer.getArea().getVerticalValue() + designer.getParaHeight()); + return null; + } + }.execute(); } AddingModel addingModel = designer.getAddingModel(); From 20ae95aa78ee81ba747f4f9b8aca6aaf2a8d8f9f Mon Sep 17 00:00:00 2001 From: lucian Date: Thu, 26 Dec 2019 14:33:34 +0800 Subject: [PATCH 17/20] =?UTF-8?q?1.8=E7=BC=96=E8=AF=91=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/template/info/TemplateInfoTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/test/java/com/fr/design/mainframe/template/info/TemplateInfoTest.java b/designer-base/src/test/java/com/fr/design/mainframe/template/info/TemplateInfoTest.java index 19f6066ff8..426dba3b1d 100644 --- a/designer-base/src/test/java/com/fr/design/mainframe/template/info/TemplateInfoTest.java +++ b/designer-base/src/test/java/com/fr/design/mainframe/template/info/TemplateInfoTest.java @@ -54,7 +54,7 @@ public class TemplateInfoTest { TemplateInfo templateInfo = TemplateInfo.newInstance(templateID); assertEquals(templateID, templateInfo.getTemplateID()); assertEquals(StringUtils.EMPTY, Reflect.on(templateInfo).field("originID").get()); - assertEquals(0, Reflect.on(templateInfo).field("idleDayCount").get()); + assertEquals(0, (int) Reflect.on(templateInfo).field("idleDayCount").get()); assertEquals("{}", templateInfo.getProcessMapJsonString()); Map consumingMap = Reflect.on(templateInfo).field("consumingMap").get(); @@ -77,7 +77,7 @@ public class TemplateInfoTest { TemplateInfo templateInfo = TemplateInfo.newInstance(templateID, originID, originTime); assertEquals(templateID, templateInfo.getTemplateID()); assertEquals(originID, Reflect.on(templateInfo).field("originID").get()); - assertEquals(0, Reflect.on(templateInfo).field("idleDayCount").get()); + assertEquals(0, (int) Reflect.on(templateInfo).field("idleDayCount").get()); assertEquals("{}", templateInfo.getProcessMapJsonString()); Map consumingMap = Reflect.on(templateInfo).field("consumingMap").get(); From 4db0ae19e948af59bb00b7c6de5d6585eacd971d Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 26 Dec 2019 15:01:49 +0800 Subject: [PATCH 18/20] =?UTF-8?q?REPORT-25417=20=E6=99=BA=E8=83=BD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=95=E5=85=83=E6=A0=BC=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E4=B8=8D=E5=87=86=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/mainframe/ElementCasePane.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 4e12bd5f85..21d62d7eb9 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 @@ -523,8 +523,9 @@ public abstract class ElementCasePane extends Tar @Override public void setSelection(Selection selection) { - if (!ComparatorUtils.equals(this.selection, selection) || - !ComparatorUtils.equals(EastRegionContainerPane.getInstance().getCellAttrPane(), CellElementPropertyPane.getInstance())) { + if (!ComparatorUtils.equals(this.selection, selection) + || !ComparatorUtils.equals(EastRegionContainerPane.getInstance().getCellAttrPane(), CellElementPropertyPane.getInstance()) + || DesignModeContext.isAuthorityEditing()) { try { //旧选中内容编辑器释放模板对象 QuickEditor editor = this.getCurrentEditor(); @@ -535,6 +536,7 @@ public abstract class ElementCasePane extends Tar FineLoggerFactory.getLogger().info("Nothing to release"); } this.selection = selection; + fireSelectionChanged(); } fireSelectionChanged(); } From f933dd70daa702f18aec985ff373c2453033cae7 Mon Sep 17 00:00:00 2001 From: hades Date: Thu, 26 Dec 2019 15:02:55 +0800 Subject: [PATCH 19/20] fix --- .../src/main/java/com/fr/design/mainframe/ElementCasePane.java | 1 - 1 file changed, 1 deletion(-) 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 21d62d7eb9..27f3368216 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 @@ -538,7 +538,6 @@ public abstract class ElementCasePane extends Tar this.selection = selection; fireSelectionChanged(); } - fireSelectionChanged(); } From 99be8cc93a34dbd415558c980a27a22bf90f5eda Mon Sep 17 00:00:00 2001 From: neil <459208047@qq.com> Date: Fri, 27 Dec 2019 10:53:43 +0800 Subject: [PATCH 20/20] =?UTF-8?q?=E6=97=A0jira=E4=BB=BB=E5=8A=A1,=20?= =?UTF-8?q?=E5=86=B2=E7=AA=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/gui/controlpane/UIControlPane.java | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java index 27934efb79..6ab6bce56f 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/UIControlPane.java @@ -9,19 +9,10 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.menu.ShortCut; import com.fr.design.utils.gui.GUICoreUtils; -import com.fr.design.utils.gui.UIComponentUtils; import com.fr.design.widget.FRWidgetFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; - import com.fr.stable.os.OperatingSystem; -import javax.swing.BorderFactory; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JSplitPane; -import javax.swing.border.EmptyBorder; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Cursor; @@ -35,6 +26,14 @@ import java.awt.Point; import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.Window; +import javax.swing.BorderFactory; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JSplitPane; +import javax.swing.border.EmptyBorder; + import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; @@ -73,7 +72,6 @@ abstract class UIControlPane extends JControlPane { this.creators = this.createNameableCreators(); initCardPane(); - if (isNewStyle()) { getPopupEditDialog(cardPane); this.add(getLeftPane(), BorderLayout.CENTER); @@ -149,9 +147,7 @@ abstract class UIControlPane extends JControlPane { topToolBar.setLayout(new BorderLayout()); ShortCut addItem = shortCutFactory.addItemShortCut().getShortCut(); addItem.intoJToolBar(topToolBar); - JPanel leftTopPane = getLeftTopPane(topToolBar); - leftTopPane.setBorder(BorderFactory.createEmptyBorder(0, 0, 6, 0)); leftPane.add(leftTopPane, BorderLayout.NORTH); @@ -172,7 +168,6 @@ abstract class UIControlPane extends JControlPane { JPanel leftTopPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); leftTopPane.add(toolBarPane, BorderLayout.EAST); leftTopPane.add(addItemLabel, BorderLayout.CENTER); - return leftTopPane; } @@ -203,7 +198,6 @@ abstract class UIControlPane extends JControlPane { topToolBar.validate(); this.controlUpdatePane = createControlUpdatePane();//REPORT-4841 刷新一下编辑面板 cardPane.add(controlUpdatePane, "EDIT"); - this.repaint(); } @@ -249,7 +243,6 @@ abstract class UIControlPane extends JControlPane { return; } } - // 要隐藏 先检查有没有非法输入 // 非法输入检查放在最后,因为可能出现面板弹出新弹框而失去焦点的情况,比如 输入公式时,弹出公式编辑对话框 try { @@ -269,7 +262,8 @@ abstract class UIControlPane extends JControlPane { addWindowFocusListener(new WindowAdapter() { @Override public void windowLostFocus(WindowEvent e) { - if (OperatingSystem.isLinux()) { + //在Linux上拉回焦点,不然导致一些面板关不掉 + if(OperatingSystem.isLinux()) { requestFocus(); } hideDialog();