Browse Source

Merge pull request #14714 in DESIGN/design from fbp/release to fbp/feature

* commit '508d0ece3d98464993d59b2be19e33715ea24ca7':
  REPORT-131584 判重数据集名称
  REPORT-131067 远程设计密码次数过多抛错异常 优化重复代码
  REPORT-131067 远程设计密码次数过多抛错异常
  REPORT-130000 fbp的fr服务启动失败,但是fbp设计器测试连接还是成功的,点击确定设计器页面卡死 & REPORT-131068 远程设计权限校验不生效
  REPORT-131625 fix: 修复预览行数限制问题
  无JIRA任务 改了前端bug,更新一波js
  REPORT-131288 【取数优化】先启本地工程,就不会有数据中心的入口,必须直接远程状态启用才可以
  REPORT-130891 【FBP数据源】url方式预览文件数据集失败
  REPORT-130724 & REPORT-130807【newUI】fix:东区单元格元素滚动条问题及视觉问题修复
  REPORT-130724 & REPORT-130807【newUI】fix:东区单元格元素滚动条问题及视觉问题修复
fbp/research
superman 5 months ago
parent
commit
857a06eef2
  1. 7
      designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java
  2. 2
      designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java
  3. 4
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java
  4. 4
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java
  5. 12
      designer-base/src/main/java/com/fr/design/data/tabledata/LocalTableDataSource.java
  6. 17
      designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataJSBridge.java
  7. 40
      designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataPane.java
  8. 16
      designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/FileTableDataPane.java
  9. 4
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java
  10. 14
      designer-base/src/main/java/com/fr/design/dialog/BasicScrollPane.java
  11. 36
      designer-base/src/main/java/com/fr/design/env/HttpWorkspaceConnector.java
  12. 1
      designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java
  13. 2
      designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java
  14. 1
      designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json
  15. 4
      designer-base/src/main/resources/com/fr/design/data/tabledata/datacenter/web/data-choose.main.js
  16. 10
      designer-chart/src/main/java/com/fr/design/mainframe/ChartPropertyPane.java
  17. 6
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java
  18. 16
      designer-chart/src/main/java/com/fr/van/chart/designer/AbstractVanChartScrollPane.java
  19. 9
      designer-realize/src/main/java/com/fanruan/boot/env/DesignPluginComponent.java
  20. 20
      designer-realize/src/main/java/com/fanruan/boot/init/DesignWorkContextComponent.java
  21. 8
      designer-realize/src/main/java/com/fr/design/sort/expressionpane/CustomSequencePane.java

7
designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java

@ -352,6 +352,13 @@ public abstract class BasicTableDataTreePane extends DockingView implements Resp
});
}
}
/**
* 重置
*/
public void resetAddMenuDef() {
this.addMenuDef.clearShortCuts();
this.createAddMenuDef();
}
private abstract class TDAction extends UpdateAction {

2
designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java

@ -593,6 +593,8 @@ public abstract class DesignTableDataManager {
PreviewDataBean dataBean = new PreviewDataBean();
dataBean.setDataSource(tabledata);
dataBean.setParameterMap(parameterMap);
dataBean.setStart(rowCount);
dataBean.setEnd(-1);
return (EmbeddedTableData) TableDataRepository.getInstance().previewTableData(dataBean).getTableData();
}

4
designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java

@ -14,7 +14,7 @@ import com.fine.theme.icon.LazyIcon;
import com.fr.data.impl.storeproc.StoreProcedure;
import com.fr.datacenters.tabledata.DCTableData;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.data.tabledata.datacenter.DatacentersPane;
import com.fr.design.data.tabledata.datacenter.DCTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.ClassTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.DBTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.EmbeddedTableDataPane;
@ -95,7 +95,7 @@ public class TableDataCreatorProducer {
return new TableDataNameObjectCreator[]{
new TableDataNameObjectCreator(i18nText("Fine-Design_Basic_DS_Datacenters"),
new LazyIcon("datacenter"),
DCTableData.class, DatacentersPane.class) {
DCTableData.class, DCTableDataPane.class) {
@Override
public boolean shouldInsertSeparator() {
return true;

4
designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java

@ -646,10 +646,6 @@ public class TableDataTreePane extends BasicTableDataTreePane {
}
private void resetAddMenuDef() {
this.addMenuDef.clearShortCuts();
this.createAddMenuDef();
}
/**
* 感觉这里把一堆Action和Op之类的送到抽象类里去检查很奇怪抽象类本身定义的Action只有add和connection

12
designer-base/src/main/java/com/fr/design/data/tabledata/LocalTableDataSource.java

@ -1,8 +1,10 @@
package com.fr.design.data.tabledata;
import com.fanruan.config.impl.data.TableDataConfigProviderFactory;
import com.fr.decision.webservice.bean.dataset.FileDataSetBean;
import com.fr.decision.webservice.bean.entry.FileNodeBean;
import com.fr.decision.webservice.v10.datasource.dataset.processor.impl.FileProcessor;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.StringUtils;
import com.fr.workspace.server.repository.tabledata.BaseTableDataSource;
@ -49,4 +51,14 @@ public class LocalTableDataSource extends BaseTableDataSource {
public List<FileNodeBean> getFileList(String fileType) {
return FileProcessor.KEY.getFileList(fileType, StringUtils.EMPTY);
}
@Override
public boolean testFilePath(FileDataSetBean fileDataSetBean) {
try {
return FileProcessor.KEY.testFilePath(fileDataSetBean);
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
return false;
}
}
}

17
designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DatacentersJSBridge.java → designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataJSBridge.java

@ -4,6 +4,7 @@ import com.fr.base.BaseFormula;
import com.fr.datacenters.tabledata.bean.DCFilterQueryBean;
import com.fr.datacenters.tabledata.bean.DCTableDataBean;
import com.fr.datacenters.tabledata.filter.DCFilter;
import com.fr.datacenters.tabledata.parameter.DCParameter;
import com.fr.design.bridge.exec.JSBridge;
import com.fr.design.dialog.DialogActionListener;
import com.fr.design.dialog.UIDialog;
@ -37,7 +38,7 @@ import java.util.stream.Collectors;
* Created on 2024/6/17
*/
@JsAccessible
public class DatacentersJSBridge {
public class DCTableDataJSBridge {
private static final String EVENT_FORMULA_UPDATE = "OK";
private static final String EVENT_FORMULA_CANCEL = "CANCEL";
@ -47,25 +48,25 @@ public class DatacentersJSBridge {
* @param window js环境的window对象
* @return 桥接实例
*/
public static DatacentersJSBridge getBridge(JsObject window) {
return new DatacentersJSBridge(window);
public static DCTableDataJSBridge getBridge(JsObject window) {
return new DCTableDataJSBridge(window);
}
private final JsObject window;
private DatacentersJSBridge(JsObject window) {
private DCTableDataJSBridge(JsObject window) {
this.window = window;
}
private static DatacentersPane relationPanel;
private static DCTableDataPane relationPanel;
/**
* 设置窗口用于打开对话框的层级
*
* @param panel 面板
*/
public static void relationPanel(DatacentersPane panel) {
public static void relationPanel(DCTableDataPane panel) {
relationPanel = panel;
}
@ -161,7 +162,9 @@ public class DatacentersJSBridge {
JxUIPane.DEFAULT_EXECUTOR.submit(() -> {
try {
DCTableDataBean decoded = EmbedJson.decodeValue(tableData, DCTableDataBean.class);
DCFilter dcFilter = decoded.getFilter().evalValue(decoded.getParameters(), Calculator.createCalculator());
DCParameter[] dcParameters = Arrays.stream(decoded.getParameters())
.map(DCParameter::fromBean).toArray(DCParameter[]::new);
DCFilter dcFilter = decoded.getFilter().evalValue(dcParameters, Calculator.createCalculator());
DCFilterQueryBean queryBean = dcFilter.toQueryBean();
String encode = EmbedJson.encode(queryBean);
callback.invoke(window, encode);

40
designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DatacentersPane.java → designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataPane.java

@ -4,6 +4,7 @@ import com.fanruan.workplace.http.ServiceType;
import com.fr.datacenters.tabledata.DCTableData;
import com.fr.datacenters.tabledata.bean.DCNameBean;
import com.fr.datacenters.tabledata.bean.DCTableDataBean;
import com.fr.design.data.DesignTableDataManager;
import com.fr.design.data.tabledata.tabledatapane.AbstractTableDataPane;
import com.fr.design.dialog.DialogActionListener;
import com.fr.design.dialog.UIDialog;
@ -14,10 +15,15 @@ import com.fr.json.revise.EmbedJson;
import com.fr.stable.StringUtils;
import com.fr.third.guava.collect.ImmutableMap;
import com.fr.workspace.WorkContext;
import com.teamdev.jxbrowser.browser.callback.InjectJsCallback;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import java.awt.Window;
import java.util.Arrays;
import static com.fr.design.ui.ModernUIConstants.DOT;
import static com.fr.design.ui.ModernUIConstants.WINDOW;
/**
* 数据中心数据集面板
@ -26,7 +32,7 @@ import java.awt.Window;
* @since 11.0
* Created on 2024/6/17
*/
public class DatacentersPane extends AbstractTableDataPane<DCTableData> {
public class DCTableDataPane extends AbstractTableDataPane<DCTableData> {
private static final JxEngine JX_ENGINE = JxEngine.newInstance(false);
@ -37,31 +43,7 @@ public class DatacentersPane extends AbstractTableDataPane<DCTableData> {
// 用于复制粘贴场景
private DCTableData dcTableData;
/**
* 借用只运行一次
*/
private void addDialogActionListener() {
// 保证在窗口加载完成后执行
SwingUtilities.invokeLater(() -> {
Window ancestor = SwingUtilities.getWindowAncestor(DatacentersPane.this);
if (ancestor instanceof UIDialog) {
((UIDialog) ancestor).addDialogActionListener(new DialogActionListener() {
@Override
public void doOk() {
dataCenterJxUIPane.disposeBrowser();
}
@Override
public void doCancel() {
dataCenterJxUIPane.disposeBrowser();
}
});
}
});
}
public DatacentersPane() {
public DCTableDataPane() {
setLayout(new BorderLayout());
dataCenterJxUIPane = getJxUIPane();
add(dataCenterJxUIPane, BorderLayout.CENTER);
@ -73,7 +55,7 @@ public class DatacentersPane extends AbstractTableDataPane<DCTableData> {
return new JxUIPane.Builder<String>()
.engine(JX_ENGINE)
.namespace(DATA_CENTER)
.bindWindow(DATA_CENTER_HELPER, DatacentersJSBridge::getBridge)
.bindWindow(DATA_CENTER_HELPER, DCTableDataJSBridge::getBridge)
.withEMB("com/fr/design/data/tabledata/datacenter/web/data-choose.prod.html",
ImmutableMap.of("fineServletURL", getDatacentersUrl()))
.build();
@ -96,9 +78,11 @@ public class DatacentersPane extends AbstractTableDataPane<DCTableData> {
@Override
public void populateBean(DCTableData ob) {
DatacentersJSBridge.relationPanel(this);
DCTableDataJSBridge.relationPanel(this);
dcTableData = ob;
dataCenterJxUIPane.populate(EmbedJson.encode(ob.toBean()));
String[] allDSNames = DesignTableDataManager.getAllDSNames(DesignTableDataManager.getEditingTableDataSource());
dataCenterJxUIPane.executeJS(DATA_CENTER + DOT + "datasetNames=" + EmbedJson.encode(allDSNames));
}

16
designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/FileTableDataPane.java

@ -14,6 +14,7 @@ import com.fr.data.impl.ExcelTableData;
import com.fr.data.impl.FileTableData;
import com.fr.data.impl.TextTableData;
import com.fr.data.impl.XMLTableData;
import com.fr.decision.webservice.bean.dataset.FileDataSetBean;
import com.fr.design.actions.UpdateAction;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.data.datapane.preview.PreviewTablePane;
@ -47,6 +48,7 @@ import com.fr.stable.ParameterProvider;
import com.fr.stable.StringUtils;
import com.fr.stable.xml.XMLReadable;
import com.fr.stable.xml.XMLableReader;
import com.fr.workspace.server.repository.tabledata.TableDataRepository;
import javax.swing.ButtonGroup;
import javax.swing.JOptionPane;
@ -233,22 +235,20 @@ public class FileTableDataPane extends AbstractTableDataPane<FileTableData> {
}
params = getEditorPaneParameter();
URLDataSource url = new URLDataSource(urlText.getText().trim(), params);
InputStream in = null;
boolean result = false;
try {
in = url.getSourceStream(params);
String urlText = ParameterHelper.analyze4Templatee(url.getUrl(), params);
FileDataSetBean bean = new FileDataSetBean();
bean.setFilePath(urlText);
result = TableDataRepository.getInstance().testFilePath(bean);
} catch (Throwable e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
if (in == null) {
if (!result) {
FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Database_Connection_Failed"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Error"), JOptionPane.ERROR_MESSAGE, UIManager.getIcon("OptionPane.errorIcon"));
} else {
FineJOptionPane.showMessageDialog(DesignerContext.getDesignerFrame(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Datasource_Connection_Successfully"));
try {
in.close();
} catch (IOException e) {
in = null;
}
}
}
};

4
designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java

@ -15,7 +15,7 @@ import com.fr.data.impl.storeproc.StoreProcedure;
import com.fr.datacenters.tabledata.DCTableData;
import com.fr.decision.webservice.bean.dataset.ServerDataSetBean;
import com.fr.design.data.datapane.TableDataNameObjectCreator;
import com.fr.design.data.tabledata.datacenter.DatacentersPane;
import com.fr.design.data.tabledata.datacenter.DCTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.AbstractTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.ClassTableDataPane;
import com.fr.design.data.tabledata.tabledatapane.DBTableDataPane;
@ -79,7 +79,7 @@ public abstract class TableDataFactory {
i18nText("Fine-Design_Basic_DS_Datacenters"),
new LazyIcon("datacenter"),
DCTableData.class,
DatacentersPane.class));
DCTableDataPane.class));
map.putAll(defaultMap);
}

14
designer-base/src/main/java/com/fr/design/dialog/BasicScrollPane.java

@ -5,6 +5,7 @@ import com.fr.design.gui.iscrollbar.UIScrollBar;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.SwingUtilities;
import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Component;
@ -111,6 +112,15 @@ public abstract class BasicScrollPane<T> extends BasicBeanPane<T>{
doLayout();
}
/**
* 插入图表后单元格元素使用cardLayout布局,需要滚动效果获取高度在子类中重新计算
*
* @return height
*/
protected int getMaxHeight(){
return getHeight();
}
protected class BarLayout implements LayoutManager {
@Override
@ -135,7 +145,7 @@ public abstract class BasicScrollPane<T> extends BasicBeanPane<T>{
@Override
public void layoutContainer(Container parent) {
if(getHeight() >= leftcontentPane.getPreferredSize().height) {
if(getMaxHeight() >= leftcontentPane.getPreferredSize().height) {
scrollBar.setEnabled(false);
scrollBar.setVisible(false);
} else {
@ -143,7 +153,7 @@ public abstract class BasicScrollPane<T> extends BasicBeanPane<T>{
scrollBar.setEnabled(show);
scrollBar.setVisible(show);
}
maxheight = getHeight() - DET_HEIGHT;
maxheight = getMaxHeight() - DET_HEIGHT;
if ((MAXVALUE - scrollBar.getVisibleAmount()) == 0) {
beginY = 0;
} else {

36
designer-base/src/main/java/com/fr/design/env/HttpWorkspaceConnector.java vendored

@ -4,8 +4,10 @@ import com.fanruan.workplace.http.HttpConstants;
import com.fanruan.workplace.http.HttpServiceMap;
import com.fanruan.workplace.http.RepositoryManager;
import com.fanruan.workplace.http.info.Stub;
import com.fr.exception.RemoteDesignPermissionDeniedException;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.StringUtils;
import com.fr.workspace.engine.exception.RemoteDesignConnectionException;
import com.fr.workspace.server.repository.authority.RemoteAuthorityRepository;
import com.fr.workspace.server.repository.compatible.register.CompatibleRegister;
import com.fr.workspace.server.repository.connect.FineWorkspaceHttpClient;
@ -43,7 +45,8 @@ public class HttpWorkspaceConnector implements WorkspaceConnector {
FineWorkspaceHttpClient client = FineWorkspaceHttpClient.create("Http-Client", connectionInfo);
LoginResponseInfoBean bean;
try {
bean = RemoteAuthorityRepository.getInstance().login(createLoginBean(connectionInfo));
bean = RemoteAuthorityRepository.getInstance().login(createLoginBean(connectionInfo));
checkValidAndUpdateInfo(client, connectionInfo, bean);
} finally {
client.closePool();
}
@ -65,12 +68,7 @@ public class HttpWorkspaceConnector implements WorkspaceConnector {
throw new RuntimeException("Empty token, try connect again and check server");
}
FineLoggerFactory.getLogger().info("[connector] infos:{}", bean.getAccessToken());
WorkspaceConnection connection = new WorkspaceConnection(
UUID.randomUUID().toString(),
connectionInfo.getUserName(),
HttpConstants.AUTHORIZATION_PREFIX + bean.getAccessToken(),
InetAddress.getLocalHost().getHostAddress());
client.updateConnection(connection);
checkValidAndUpdateInfo(client, connectionInfo, bean);
client.startHeartBeat();
} catch (Exception e) {
client.closePool();
@ -81,6 +79,30 @@ public class HttpWorkspaceConnector implements WorkspaceConnector {
return client;
}
private void checkValidAndUpdateInfo(FineWorkspaceHttpClient client, WorkspaceConnectionInfo connectionInfo, LoginResponseInfoBean bean) throws Exception {
WorkspaceConnection connection = new WorkspaceConnection(
UUID.randomUUID().toString(),
connectionInfo.getUserName(),
HttpConstants.AUTHORIZATION_PREFIX + bean.getAccessToken(),
InetAddress.getLocalHost().getHostAddress());
client.updateConnection(connection);
// 检查远程权限
if (!checkRemoteAuthority(connection)) {
// 无权限则抛出无权限的错
throw new RemoteDesignPermissionDeniedException();
}
}
private boolean checkRemoteAuthority(WorkspaceConnection connection) {
try {
return RemoteAuthorityRepository.getInstance().isRoot(connection.getUserName()) || RemoteAuthorityRepository.getInstance().hasAuthority(connection.getUserName());
} catch (Exception e) {
// 如果这里出现异常,就认为fr服务没启动
throw new RemoteDesignConnectionException(e, StringUtils.EMPTY);
}
}
private LoginRequestInfoBean createLoginBean(WorkspaceConnectionInfo connectionInfo) {
LoginRequestInfoBean bean = new LoginRequestInfoBean();
bean.setUsername(connectionInfo.getUserName());

1
designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java

@ -755,6 +755,7 @@ public class DesignerFrame extends JFrame implements JTemplateActionListener, Ta
refresh();
DesignerFrameFileDealerPane.getInstance().refreshDockingView();
TemplateTreePane.getInstance().refreshDockingView();
TableDataTreePane.getInstanceWithoutRefreshEverytime(DesignModelAdapter.getCurrentModelAdapter()).resetAddMenuDef();
}
/**

2
designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java

@ -836,7 +836,7 @@ public class EastRegionContainerPane extends UIEastResizableContainer {
if (StringUtils.equals(KEY_WIDGET_SETTINGS, name)) {
title = currentMode.getTitle();
button.setToolTipText(title);
UILabel uiLabel = (UILabel) ((BorderLayout) popupToolPane.contentPane.getLayout()).getLayoutComponent(BorderLayout.WEST);
UILabel uiLabel = (UILabel) ((BorderLayout) popupToolPane.contentPane.getLayout()).getLayoutComponent(BorderLayout.CENTER);
uiLabel.setText(title);
}
} catch (Exception e) {

1
designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json

@ -21,6 +21,7 @@
"add": "add.svg",
"add_hover": "add_hover.svg",
"detail": "detail.svg",
"debug": "debug.svg",
"dataLink": "dataLink.svg",
"jumpHelp": "jumpHelp.svg",
"switch": "switch.svg",

4
designer-base/src/main/resources/com/fr/design/data/tabledata/datacenter/web/data-choose.main.js

File diff suppressed because one or more lines are too long

10
designer-chart/src/main/java/com/fr/design/mainframe/ChartPropertyPane.java

@ -3,15 +3,12 @@
*/
package com.fr.design.mainframe;
import com.fine.theme.utils.FineUIScale;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.base.BaseUtils;
import com.fr.base.chart.BaseChartCollection;
import com.fr.chart.chartattr.ChartCollection;
import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.chartx.attr.ChartProvider;
import com.fr.decision.webservice.v10.map.geojson.helper.GEOJSONHelper;
import com.fr.design.ChartTypeInterfaceManager;
import com.fr.design.designer.TargetComponent;
import com.fr.design.gui.chart.BaseChartPropertyPane;
@ -20,10 +17,9 @@ import com.fr.design.gui.frpane.UITitlePanel;
import com.fr.design.mainframe.chart.ChartEditPane;
import com.fr.design.utils.gui.GUICoreUtils;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.SwingWorker;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Component;
public class ChartPropertyPane extends BaseChartPropertyPane {
@ -45,8 +41,6 @@ public class ChartPropertyPane extends BaseChartPropertyPane {
protected void initComponent() {
this.setLayout(new BorderLayout());
this.setBorder(new ScaledEmptyBorder(10, 0, 0, 0));
// 外部轮廓大小固定,适配滚动面板
this.setPreferredSize(new Dimension(getWidth(), FineUIScale.scale(900)));
}
@Override

6
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java

@ -55,8 +55,8 @@ public class UIColorPickerPane extends BasicPane implements UIObserver {
private static final int COLOR_REC_WIDTH = scale(30);
protected static final int TEXTFIELD_HEIGHT = scale(20);
protected static final int TEXTFIELD_WIDTH = scale(130);
protected static final int UPCONTROLPANE_WIDTH = scale(230);
private static final int LAYOUR_DET = 6;
protected static final int UPCONTROLPANE_WIDTH = scale(218);
private static final int LAYOUR_DET = scale(6);
public static final double VALUE = 100;
@ -611,7 +611,7 @@ public class UIColorPickerPane extends BasicPane implements UIObserver {
@Override
public void layoutContainer(Container parent) {
upControlPane.setBounds(getBoundX(), getBoundY(), UPCONTROLPANE_WIDTH, upControlPane.getPreferredSize().height + MARGIN_TOP);
stagePanel.setBounds(getBoundX(), upControlPane.getPreferredSize().height + LAYOUR_DET + getBoundY(), UPCONTROLPANE_WIDTH, stagePanel.getPreferredSize().height);
stagePanel.setBounds(getBoundX(), upControlPane.getPreferredSize().height + scale(8) + getBoundY(), UPCONTROLPANE_WIDTH, stagePanel.getPreferredSize().height);
colorGroup.setBounds( getColorgroupMarginLeft (), 2 * getBoundY() + upControlPane.getPreferredSize().height + stagePanel.getPreferredSize().height + 2 * LAYOUR_DET, colorGroup.getPreferredSize().width, colorGroup.getPreferredSize().height + upControlPane.getPreferredSize().height);
textGroup.setBounds(colorGroup.getPreferredSize().width + getColorgroupMarginLeft (), upControlPane.getPreferredSize().height + stagePanel.getPreferredSize().height + 2 * LAYOUR_DET + getBoundY(), textGroup.getPreferredSize().width, textGroup.getPreferredSize().height);
}

16
designer-chart/src/main/java/com/fr/van/chart/designer/AbstractVanChartScrollPane.java

@ -1,11 +1,12 @@
package com.fr.van.chart.designer;
import com.fine.theme.utils.FineUIScale;
import com.fr.design.dialog.BasicScrollPane;
import com.fr.design.gui.iscrollbar.UIScrollBar;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import java.awt.Container;
import javax.swing.SwingUtilities;
import java.awt.Window;
/**
* Created by mengao on 2017/8/11.
@ -21,4 +22,15 @@ public abstract class AbstractVanChartScrollPane<T> extends BasicScrollPane<T> {
super.reloaPane(pane);
leftcontentPane.setBorder(BorderFactory.createEmptyBorder());
}
/**
* getHeight与最外层ChartPropertyPane获取的高度一致都是计算的面板高度而不是到设计器底部的高度
* 这里直接获取设计器高度减去单元格元素北区最大高度(格式TextFormatPaneContainer高度不固定)先让滚动效果显示起来
* @return height
*/
@Override
protected int getMaxHeight() {
Window window = SwingUtilities.getWindowAncestor(this);
return window.getHeight() - FineUIScale.scale(400);
}
}

9
designer-realize/src/main/java/com/fanruan/boot/env/DesignPluginComponent.java vendored

@ -5,6 +5,7 @@ import com.fanruan.carina.Carina;
import com.fanruan.carina.annotions.DependsOn;
import com.fanruan.carina.annotions.FineComponent;
import com.fanruan.carina.annotions.Start;
import com.fanruan.carina.annotions.Stop;
import com.fanruan.carina.annotions.Supplemental;
import com.fanruan.plugin.autonomy.AutonomyClassManagerGroup;
import com.fanruan.plugin.autonomy.AutonomyClassManagerProvider;
@ -44,4 +45,12 @@ public class DesignPluginComponent extends PluginComponent {
protected void addPluginStoreFilter(ServletContext servletContext) {
// do nothing
}
/**
* stop
*/
@Stop
public void stop() {
super.stop();
}
}

20
designer-realize/src/main/java/com/fanruan/boot/init/DesignWorkContextComponent.java

@ -11,6 +11,11 @@ import com.fanruan.workplace.conetxt.CompatiblePool;
import com.fanruan.workplace.http.HttpConstants;
import com.fanruan.workplace.http.RepositoryManager;
import com.fanruan.workplace.http.WorkspaceHeartBeatShell;
import com.fr.workspace.engine.exception.RemoteDesignLoginLockHandler;
import com.fr.workspace.engine.exception.RemoteDesignNoAuthHandler;
import com.fr.workspace.engine.exception.RemoteDesignPasswordNeedUpdateHandler;
import com.fr.workspace.engine.exception.RemoteDesignPasswordStrengthHandler;
import com.fr.workspace.engine.exception.RemoteDesignUserPwdErrorHandler;
import com.fanruan.workplace.http.exception.RemoteExceptionConvert;
import com.fanruan.workplace.standard.ServerInfo;
import com.fanruan.workplace.standard.ServerInfoOperator;
@ -43,10 +48,6 @@ import com.fr.workspace.engine.FineWorkspaceFactory;
import com.fr.workspace.engine.base.FineObjectPool;
import com.fr.workspace.engine.client.heartbeart.FineWorkspaceHeartbeat;
import com.fr.workspace.engine.client.heartbeart.WorkspaceHeartbeat;
import com.fr.workspace.engine.exception.RemoteDesignNoAuthException;
import com.fr.workspace.engine.exception.RemoteDesignPasswordNeedUpdateException;
import com.fr.workspace.engine.exception.RemoteDesignPasswordStrengthException;
import com.fr.workspace.engine.exception.RemoteDesignUserPwdErrorException;
import com.fr.workspace.engine.resource.FineWorkResource;
import com.fr.workspace.engine.resource.FineWorkResourceAdaptor;
import com.fr.workspace.pool.WorkRPCRegister;
@ -144,11 +145,12 @@ public class DesignWorkContextComponent {
private void startErrorConvert() {
RemoteExceptionConvert.registerException(HttpConstants.USER_PWD_ERROR_CODE, new RemoteDesignUserPwdErrorException());
RemoteExceptionConvert.registerException(HttpConstants.USER_PWD_NEED_UPDATE, new RemoteDesignPasswordNeedUpdateException());
RemoteExceptionConvert.registerException(HttpConstants.PASSWORD_STRENGTH_ERROR_CODE, new RemoteDesignPasswordStrengthException());
RemoteExceptionConvert.registerException(HttpConstants.REMOTE_AUTHORITY_ERROR_CODE, new RemoteDesignNoAuthException());
RemoteExceptionConvert.registerException(HttpConstants.PASSWORD_EMPTY_ERROR_CODE, new RemoteDesignUserPwdErrorException());
RemoteExceptionConvert.registerException(HttpConstants.USER_PWD_ERROR_CODE, new RemoteDesignUserPwdErrorHandler());
RemoteExceptionConvert.registerException(HttpConstants.USER_PWD_NEED_UPDATE, new RemoteDesignPasswordNeedUpdateHandler());
RemoteExceptionConvert.registerException(HttpConstants.PASSWORD_STRENGTH_ERROR_CODE, new RemoteDesignPasswordStrengthHandler());
RemoteExceptionConvert.registerException(HttpConstants.REMOTE_AUTHORITY_ERROR_CODE, new RemoteDesignNoAuthHandler());
RemoteExceptionConvert.registerException(HttpConstants.PASSWORD_EMPTY_ERROR_CODE, new RemoteDesignUserPwdErrorHandler());
RemoteExceptionConvert.registerException(HttpConstants.LOGIN_LOCK, new RemoteDesignLoginLockHandler());
}
private void supplementalCommon() {

8
designer-realize/src/main/java/com/fr/design/sort/expressionpane/CustomSequencePane.java

@ -4,6 +4,7 @@ import com.fine.swing.ui.layout.Layouts;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineUIScale;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.dialog.BasicDialog;
import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.itextfield.UITextField;
@ -42,14 +43,17 @@ public class CustomSequencePane extends JPanel {
@Override
public void mouseClicked(MouseEvent e) {
CustomSequenceEditPane customSequenceEditPane = new CustomSequenceEditPane(customSequence);
customSequenceEditPane.showWindowWithCustomSize(DesignerContext.getDesignerFrame(), new DialogActionAdapter() {
BasicDialog dialog = customSequenceEditPane.showWindowWithCustomSize(DesignerContext.getDesignerFrame(), new DialogActionAdapter() {
@Override
public void doOk() {
customSequence = customSequenceEditPane.updateBean();
triggerOk(CustomSequenceSortExpression.customSequenceToString(customSequence, ","),
CustomSequenceSortExpression.isReferenceCustomSequence(customSequence));
}
}, new Dimension(700, 420)).setVisible(true);
}, FineUIScale.scale(new Dimension(700, 420)));
dialog.setAlwaysOnTop(true);
dialog.requestFocusInWindow();
dialog.setVisible(true);
}
};
button.addMouseListener(mouseAdapter);

Loading…
Cancel
Save