Browse Source

Merge pull request #5513 in DESIGN/design from bugfix/10.0 to feature/10.0

* commit '03349c27bb8994dd02e865c3797d49d8553efa0f':
  CHART-20312 图表切换按钮失焦事件
  REPORT-57202 FR11一轮回归-页面设置纸张大小问题
  REPORT-56047 设计器11.0适配内容处理 同步到10.0
  REPORT-57590 表单参数面板不应该能被复制到容器内
  REPORT-54538 组件复用无网络提示地址支持选中复制
  REPORT-57643  调整combobox的大小(feature没有合并到realease,手动合并一波)
feature/10.0
superman 3 years ago
parent
commit
517dc0ce95
  1. 6
      designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java
  2. 29
      designer-base/src/main/java/com/fr/design/env/LocalDesignerWorkspaceInfo.java
  3. 4
      designer-base/src/main/java/com/fr/env/RemoteEnvPane.java
  4. 25
      designer-base/src/main/java/com/fr/env/handler/WorkspaceExceptionHandler.java
  5. 1
      designer-base/src/main/resources/com/fr/env/jarVersion.properties
  6. 25
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypePane.java
  7. 1
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/ChartImagePane.java
  8. 10
      designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java
  9. 27
      designer-form/src/main/java/com/fr/design/mainframe/FormSelectionUtils.java
  10. 10
      designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetRepoPane.java
  11. 2
      designer-realize/src/main/java/com/fr/design/report/PageSetupPane.java
  12. 1
      designer-realize/src/main/java/com/fr/start/module/DesignerWorkspaceProvider.java

6
designer-base/src/main/java/com/fr/design/EnvChangeEntrance.java

@ -20,7 +20,7 @@ import com.fr.design.notification.NotificationCenter;
import com.fr.design.utils.DesignUtils; import com.fr.design.utils.DesignUtils;
import com.fr.design.versioncheck.VersionCheckUtils; import com.fr.design.versioncheck.VersionCheckUtils;
import com.fr.env.EnvListPane; import com.fr.env.EnvListPane;
import com.fr.env.handler.RemoteDesignExceptionHandler; import com.fr.env.handler.WorkspaceExceptionHandler;
import com.fr.exit.DesignerExiter; import com.fr.exit.DesignerExiter;
import com.fr.general.GeneralUtils; import com.fr.general.GeneralUtils;
import com.fr.invoke.Reflect; import com.fr.invoke.Reflect;
@ -139,7 +139,7 @@ public class EnvChangeEntrance {
pluginErrorRemind(); pluginErrorRemind();
} catch (Exception exception) { } catch (Exception exception) {
// 失败的处理 // 失败的处理
RemoteDesignExceptionHandler.getInstance().handleInSwitch(exception, selectedEnv); WorkspaceExceptionHandler.getInstance().handleInSwitch(exception, selectedEnv);
return false; return false;
} }
TemplateTreePane.getInstance().refreshDockingView(); TemplateTreePane.getInstance().refreshDockingView();
@ -436,7 +436,7 @@ public class EnvChangeEntrance {
} }
}); });
if (e != null) { if (e != null) {
RemoteDesignExceptionHandler.getInstance().handleInStart(e, workspaceInfo); WorkspaceExceptionHandler.getInstance().handleInStart(e, workspaceInfo);
} }
envListDialog.setVisible(true); envListDialog.setVisible(true);
} }

29
designer-base/src/main/java/com/fr/design/env/LocalDesignerWorkspaceInfo.java vendored

@ -1,18 +1,37 @@
package com.fr.design.env; package com.fr.design.env;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralUtils;
import com.fr.locale.InterProviderFactory;
import com.fr.stable.StableUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.project.ProjectConstants;
import com.fr.stable.xml.XMLPrintWriter; import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader; import com.fr.stable.xml.XMLableReader;
import com.fr.workspace.connect.WorkspaceConnectionInfo; import com.fr.workspace.connect.WorkspaceConnectionInfo;
import com.fr.workspace.engine.exception.MainVersionNotMatchException;
import java.io.File; import java.io.File;
import java.util.Properties;
/** /**
* Created by juhaoyu on 2018/6/15. * Created by juhaoyu on 2018/6/15.
*/ */
public class LocalDesignerWorkspaceInfo implements DesignerWorkspaceInfo { public class LocalDesignerWorkspaceInfo implements DesignerWorkspaceInfo {
private static final String REPORT_ENGINE_KEY = "report-engine-key";
private static final String REPORT_ENGINE_JAR;
private static final String PROP_PATH = "/com/fr/env/jarVersion.properties";
static {
Properties properties = new Properties();
try {
properties.load(LocalDesignerWorkspaceInfo.class.getResourceAsStream(PROP_PATH));
} catch (Exception ignored) {
}
REPORT_ENGINE_JAR = properties.getProperty(REPORT_ENGINE_KEY, "default.jar");
}
private String name; private String name;
private String path; private String path;
@ -86,6 +105,14 @@ public class LocalDesignerWorkspaceInfo implements DesignerWorkspaceInfo {
return false; return false;
} }
File engineLib = new File(StableUtils.pathJoin(this.path, ProjectConstants.LIB_NAME, REPORT_ENGINE_JAR));
// 非安装版本允许自由切换
boolean notExistLib = !ComparatorUtils.equals(GeneralUtils.readFullBuildNO(), InterProviderFactory.getProvider().getLocText("Fine-Core_Basic_About_No_Build"))
&& !engineLib.exists();
if (notExistLib) {
throw new MainVersionNotMatchException();
}
return true; return true;
} }
} }

4
designer-base/src/main/java/com/fr/env/RemoteEnvPane.java vendored

@ -21,7 +21,7 @@ import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayoutHelper; import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.scrollruler.ModLineBorder; import com.fr.design.scrollruler.ModLineBorder;
import com.fr.env.handler.RemoteDesignExceptionHandler; import com.fr.env.handler.WorkspaceExceptionHandler;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.third.guava.base.Strings; import com.fr.third.guava.base.Strings;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
@ -596,7 +596,7 @@ public class RemoteEnvPane extends BasicBeanPane<RemoteDesignerWorkspaceInfo> {
} }
} catch (Exception e) { } catch (Exception e) {
dialog.dispose(); dialog.dispose();
RemoteDesignExceptionHandler.getInstance().handleInTest(e, remoteEnv); WorkspaceExceptionHandler.getInstance().handleInTest(e, remoteEnv);
} }
dialogDownPane.remove(cancelButton); dialogDownPane.remove(cancelButton);
dialogDownPane.revalidate(); dialogDownPane.revalidate();

25
designer-base/src/main/java/com/fr/env/handler/RemoteDesignExceptionHandler.java → designer-base/src/main/java/com/fr/env/handler/WorkspaceExceptionHandler.java vendored

@ -1,5 +1,6 @@
package com.fr.env.handler; package com.fr.env.handler;
import com.fr.base.exception.ExceptionDescriptor;
import com.fr.design.EnvChangeEntrance; import com.fr.design.EnvChangeEntrance;
import com.fr.design.dialog.FineJOptionPane; import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.env.DesignerWorkspaceInfo;
@ -11,6 +12,7 @@ import com.fr.env.handler.impl.CommonHandler;
import com.fr.env.handler.impl.ExecutionHandler; import com.fr.env.handler.impl.ExecutionHandler;
import com.fr.env.handler.impl.UnexpectedHandler; import com.fr.env.handler.impl.UnexpectedHandler;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.stable.StringUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.swing.UIManager; import javax.swing.UIManager;
@ -23,11 +25,11 @@ import static javax.swing.JOptionPane.ERROR_MESSAGE;
* @version 10.0 * @version 10.0
* Created by hades on 2021/8/5 * Created by hades on 2021/8/5
*/ */
public class RemoteDesignExceptionHandler { public class WorkspaceExceptionHandler {
private static final RemoteDesignExceptionHandler INSTANCE = new RemoteDesignExceptionHandler(); private static final WorkspaceExceptionHandler INSTANCE = new WorkspaceExceptionHandler();
public static RemoteDesignExceptionHandler getInstance() { public static WorkspaceExceptionHandler getInstance() {
return INSTANCE; return INSTANCE;
} }
@ -35,7 +37,7 @@ public class RemoteDesignExceptionHandler {
private final List<Handler<RefWrapper, ResultWrapper>> switchList = new ArrayList<>(); private final List<Handler<RefWrapper, ResultWrapper>> switchList = new ArrayList<>();
private RemoteDesignExceptionHandler() { private WorkspaceExceptionHandler() {
// 要保证顺序 // 要保证顺序
testList.add(new CancelHandler()); testList.add(new CancelHandler());
testList.add(new ExecutionHandler()); testList.add(new ExecutionHandler());
@ -65,11 +67,15 @@ public class RemoteDesignExceptionHandler {
public void handleInSwitch(Throwable e, DesignerWorkspaceInfo workspaceInfo) { public void handleInSwitch(Throwable e, DesignerWorkspaceInfo workspaceInfo) {
if (workspaceInfo == null || workspaceInfo.getType() == DesignerWorkspaceType.Local) { if (workspaceInfo == null || workspaceInfo.getType() == DesignerWorkspaceType.Local) {
FineLoggerFactory.getLogger().error(e.getMessage(), e); FineLoggerFactory.getLogger().error(e.getMessage(), e);
FineJOptionPane.showMessageDialog(EnvChangeEntrance.getInstance().getDialog(), if (e instanceof ExceptionDescriptor) {
Toolkit.i18nText("Fine-Design_Basic_Switch_Workspace_Failed"), new CommonHandler(true).handle(new RefWrapper(e, StringUtils.EMPTY));
Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"), } else {
ERROR_MESSAGE, FineJOptionPane.showMessageDialog(EnvChangeEntrance.getInstance().getDialog(),
UIManager.getIcon("OptionPane.errorIcon")); Toolkit.i18nText("Fine-Design_Basic_Switch_Workspace_Failed"),
Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"),
ERROR_MESSAGE,
UIManager.getIcon("OptionPane.errorIcon"));
}
return; return;
} }
handle(e, switchList, workspaceInfo); handle(e, switchList, workspaceInfo);
@ -78,6 +84,7 @@ public class RemoteDesignExceptionHandler {
public void handleInStart(Throwable e, DesignerWorkspaceInfo workspaceInfo) { public void handleInStart(Throwable e, DesignerWorkspaceInfo workspaceInfo) {
if (workspaceInfo == null || workspaceInfo.getType() == DesignerWorkspaceType.Local) { if (workspaceInfo == null || workspaceInfo.getType() == DesignerWorkspaceType.Local) {
FineLoggerFactory.getLogger().error(e.getMessage(), e); FineLoggerFactory.getLogger().error(e.getMessage(), e);
new CommonHandler(false).handle(new RefWrapper(e, StringUtils.EMPTY));
return; return;
} }
handle(e, testList, workspaceInfo); handle(e, testList, workspaceInfo);

1
designer-base/src/main/resources/com/fr/env/jarVersion.properties vendored

@ -0,0 +1 @@
report-engine-key=fine-report-engine-10.0.jar

25
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypePane.java

@ -25,17 +25,19 @@ import com.fr.stable.AssistUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.JPanel; import javax.swing.JPanel;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.CardLayout; import java.awt.CardLayout;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ItemEvent; import java.awt.event.ItemEvent;
import java.awt.event.ItemListener; import java.awt.event.ItemListener;
import java.util.ArrayList; import java.awt.event.MouseAdapter;
import java.util.Iterator; import java.awt.event.MouseEvent;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/** /**
* 图表 属性表, 类型选择 界面. * 图表 属性表, 类型选择 界面.
@ -99,6 +101,19 @@ public class ChartTypePane extends AbstractChartAttrPane {
buttonPane.setEditingChartPane(chartTypeComBox); buttonPane.setEditingChartPane(chartTypeComBox);
buttonPane.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
buttonPane.requestFocus();
}
});
chartTypeComBox.addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent e) {
content.requestFocus();
}
});
return content; return content;
} }

1
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/type/ChartImagePane.java

@ -72,6 +72,7 @@ public class ChartImagePane extends ChartSelectDemoPane {
}else{ }else{
this.isDoubleClicked = false; this.isDoubleClicked = false;
} }
this.requestFocus();
super.mouseClicked(e); super.mouseClicked(e);
} }

10
designer-form/src/main/java/com/fr/design/designer/creator/XWParameterLayout.java

@ -103,6 +103,16 @@ public class XWParameterLayout extends XWAbsoluteLayout {
return false; return false;
} }
@Override
public boolean canEnterIntoAbsolutePane() {
return false;
}
@Override
public boolean canEnterIntoAdaptPane() {
return false;
}
/** /**
* 该组件是否可以拖拽(表单中参数面板和自适应布局不可以拖拽) * 该组件是否可以拖拽(表单中参数面板和自适应布局不可以拖拽)
* @return 是则返回true * @return 是则返回true

27
designer-form/src/main/java/com/fr/design/mainframe/FormSelectionUtils.java

@ -10,6 +10,7 @@ import com.fr.design.designer.creator.XCreatorUtils;
import com.fr.design.designer.creator.XLayoutContainer; import com.fr.design.designer.creator.XLayoutContainer;
import com.fr.design.designer.creator.XWAbsoluteLayout; import com.fr.design.designer.creator.XWAbsoluteLayout;
import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.XWFitLayout;
import com.fr.design.designer.creator.XWParameterLayout;
import com.fr.design.designer.creator.XWScaleLayout; import com.fr.design.designer.creator.XWScaleLayout;
import com.fr.design.designer.creator.XWTitleLayout; import com.fr.design.designer.creator.XWTitleLayout;
import com.fr.design.designer.creator.cardlayout.XWTabFitLayout; import com.fr.design.designer.creator.cardlayout.XWTabFitLayout;
@ -60,6 +61,11 @@ public class FormSelectionUtils {
*/ */
public static void paste2Container(FormDesigner designer, XLayoutContainer parent, public static void paste2Container(FormDesigner designer, XLayoutContainer parent,
FormSelection clipboard, int x, int y) { FormSelection clipboard, int x, int y) {
clipboard = filterFormSelection(clipboard, parent);
if (clipboard.isEmpty()) {
Toolkit.getDefaultToolkit().beep();
return;
}
LayoutAdapter adapter = parent.getLayoutAdapter(); LayoutAdapter adapter = parent.getLayoutAdapter();
if (parent instanceof XWAbsoluteLayout) { if (parent instanceof XWAbsoluteLayout) {
//绝对布局 //绝对布局
@ -77,6 +83,27 @@ public class FormSelectionUtils {
Toolkit.getDefaultToolkit().beep(); Toolkit.getDefaultToolkit().beep();
} }
private static FormSelection filterFormSelection(FormSelection clipboard, XLayoutContainer parent) {
FormSelection newSelection = new FormSelection();
for (XCreator xCreator : clipboard.getSelectedCreators()) {
if (parent.acceptType(XWParameterLayout.class)) {
if (xCreator.canEnterIntoParaPane()) {
newSelection.addSelectedCreator(xCreator);
}
} else if (parent.acceptType(XWAbsoluteLayout.class)) {
if (xCreator.canEnterIntoAbsolutePane()) {
newSelection.addSelectedCreator(xCreator);
}
} else if (parent.acceptType(XWFitLayout.class)) {
if (xCreator.canEnterIntoAdaptPane()) {
newSelection.addSelectedCreator(xCreator);
}
}
}
return newSelection;
}
private static boolean isExtraContainer(XLayoutContainer parent) { private static boolean isExtraContainer(XLayoutContainer parent) {
if (parent != null) { if (parent != null) {
Set<FormWidgetOptionProvider> set = ExtraDesignClassManager.getInstance().getArray(FormWidgetOptionProvider.XML_TAG); Set<FormWidgetOptionProvider> set = ExtraDesignClassManager.getInstance().getArray(FormWidgetOptionProvider.XML_TAG);

10
designer-form/src/main/java/com/fr/design/mainframe/share/ui/online/OnlineWidgetRepoPane.java

@ -14,6 +14,7 @@ import com.fr.stable.StringUtils;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants; import javax.swing.SwingConstants;
import javax.swing.SwingWorker; import javax.swing.SwingWorker;
import java.awt.BorderLayout; import java.awt.BorderLayout;
@ -164,9 +165,14 @@ public class OnlineWidgetRepoPane extends BasicPane {
tipLabel1.setForeground(Color.decode("#8F8F92")); tipLabel1.setForeground(Color.decode("#8F8F92"));
UILabel tipLabel2 = tipLabel(Toolkit.i18nText("Fine-Design_Share_Internet_Connect_Failed_Tip2")); UILabel tipLabel2 = tipLabel(Toolkit.i18nText("Fine-Design_Share_Internet_Connect_Failed_Tip2"));
tipLabel2.setForeground(Color.decode("#8F8F92")); tipLabel2.setForeground(Color.decode("#8F8F92"));
UILabel tipLabel3 = tipLabel(MARKET_URL);
tipLabel3.setForeground(Color.decode("#8F8F92"));
JTextField tipLabel3 = new JTextField(MARKET_URL);
tipLabel3.setHorizontalAlignment(JTextField.CENTER);
tipLabel3.setPreferredSize(new Dimension(240, 20));
tipLabel3.setEditable(false);
tipLabel3.setForeground(Color.decode("#8F8F92"));
tipLabel3.setBackground(null);
tipLabel3.setBorder(null);
UILabel emptyLabel = tipLabel(StringUtils.EMPTY); UILabel emptyLabel = tipLabel(StringUtils.EMPTY);
panel.add(uiLabel); panel.add(uiLabel);

2
designer-realize/src/main/java/com/fr/design/report/PageSetupPane.java

@ -779,7 +779,7 @@ public class PageSetupPane extends BasicPane {
//使用科学计数法显示长度的时候,限制纵向显示长度为9位 //使用科学计数法显示长度的时候,限制纵向显示长度为9位
if (h_str.contains(E)) { if (h_str.contains(E)) {
String str1 = h_str.substring(h_str.indexOf(E)); String str1 = h_str.substring(h_str.indexOf(E));
String str2 = h_str.substring(0, 9 - str1.length()); String str2 = h_str.substring(0, Math.min(h_str.length(), 9) - str1.length());
h_str = str2 + str1; h_str = str2 + str1;
} else if (h_str.indexOf(CoreConstants.DOT) > 0) { } else if (h_str.indexOf(CoreConstants.DOT) > 0) {
h_str = h_str.substring(0, h_str.indexOf(CoreConstants.DOT) + 2); h_str = h_str.substring(0, h_str.indexOf(CoreConstants.DOT) + 2);

1
designer-realize/src/main/java/com/fr/start/module/DesignerWorkspaceProvider.java

@ -9,7 +9,6 @@ import com.fr.design.env.DesignerWorkspaceGenerator;
import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.env.DesignerWorkspaceInfo;
import com.fr.design.env.LocalDesignerWorkspaceInfo; import com.fr.design.env.LocalDesignerWorkspaceInfo;
import com.fr.design.versioncheck.VersionCheckUtils; import com.fr.design.versioncheck.VersionCheckUtils;
import com.fr.env.handler.RemoteDesignExceptionHandler;
import com.fr.event.Event; import com.fr.event.Event;
import com.fr.event.EventDispatcher; import com.fr.event.EventDispatcher;
import com.fr.event.Listener; import com.fr.event.Listener;

Loading…
Cancel
Save