Browse Source

Merge remote-tracking branch 'origin/fbp/release' into fbp/release

fbp/release
Kobi 3 months ago
parent
commit
1f066c72f9
  1. 1
      designer-base/src/main/java/com/fine/theme/utils/FineUIStyle.java
  2. 20
      designer-base/src/main/java/com/fr/design/actions/file/export/AbstractExportAction.java
  3. 5
      designer-base/src/main/java/com/fr/design/backup/DesignContext.java
  4. 4
      designer-base/src/main/java/com/fr/design/condition/DSColumnLiteConditionPane.java
  5. 7
      designer-base/src/main/java/com/fr/design/data/BasicTableDataTreePane.java
  6. 2
      designer-base/src/main/java/com/fr/design/data/DesignTableDataManager.java
  7. 4
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.java
  8. 4
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java
  9. 12
      designer-base/src/main/java/com/fr/design/data/tabledata/LocalTableDataSource.java
  10. 17
      designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataJSBridge.java
  11. 40
      designer-base/src/main/java/com/fr/design/data/tabledata/datacenter/DCTableDataPane.java
  12. 16
      designer-base/src/main/java/com/fr/design/data/tabledata/tabledatapane/FileTableDataPane.java
  13. 4
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java
  14. 14
      designer-base/src/main/java/com/fr/design/dialog/BasicScrollPane.java
  15. 36
      designer-base/src/main/java/com/fr/design/env/HttpWorkspaceConnector.java
  16. 2
      designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java
  17. 12
      designer-base/src/main/java/com/fr/design/formula/JavaEditorPane.java
  18. 3
      designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java
  19. 2
      designer-base/src/main/java/com/fr/design/gui/date/UICalendarPanel.java
  20. 4
      designer-base/src/main/java/com/fr/design/gui/date/UIDayLabel.java
  21. 1
      designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java
  22. 1
      designer-base/src/main/java/com/fr/design/mainframe/DesignerFrame.java
  23. 2
      designer-base/src/main/java/com/fr/design/mainframe/EastRegionContainerPane.java
  24. 3
      designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java
  25. 13
      designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeDialog.java
  26. 6
      designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeGridPagesDialog.java
  27. 2
      designer-base/src/main/java/com/fr/design/mainframe/theme/edit/chart/ChartFontPane.java
  28. 2
      designer-base/src/main/java/com/fr/design/style/color/ColorChooserPreview.java
  29. 4
      designer-base/src/main/java/com/fr/design/style/color/ColorSelectDialog.java
  30. 19
      designer-base/src/main/java/com/fr/design/style/color/CustomChooserPanel.java
  31. 15
      designer-base/src/main/java/com/fr/design/style/color/SwatchChooserPanel.java
  32. 8
      designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java
  33. 5
      designer-base/src/main/resources/com/fine/theme/icon/theme_edit.svg
  34. 4
      designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json
  35. 8
      designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties
  36. 10
      designer-chart/src/main/java/com/fr/design/mainframe/ChartPropertyPane.java
  37. 6
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/style/series/UIColorPickerPane.java
  38. 16
      designer-chart/src/main/java/com/fr/van/chart/designer/AbstractVanChartScrollPane.java
  39. 9
      designer-realize/src/main/java/com/fanruan/boot/env/DesignPluginComponent.java
  40. 1
      designer-realize/src/main/java/com/fanruan/boot/env/function/DesignComponent.java
  41. 20
      designer-realize/src/main/java/com/fanruan/boot/init/DesignWorkContextComponent.java
  42. 41
      designer-realize/src/main/java/com/fr/design/report/ReportEnginePane.java
  43. 26
      designer-realize/src/main/java/com/fr/design/report/WriteShortCutsPane.java
  44. 8
      designer-realize/src/main/java/com/fr/design/sort/expressionpane/CustomSequencePane.java
  45. 1
      designer-realize/src/main/java/com/fr/design/webattr/EditToolBar.java
  46. 6
      designer-realize/src/main/java/com/fr/design/webattr/ReportWebWidgetConstants.java

1
designer-base/src/main/java/com/fine/theme/utils/FineUIStyle.java

@ -51,6 +51,7 @@ public interface FineUIStyle {
String WHITE_BUTTON = "whiteButton";
String ORIGINAL_BUTTON = "originalButton";
String DETAIL_LABEL = "detailLabel";
String WIDGET_EVENT_LABEL = "widgetEventLabel";
/**

20
designer-base/src/main/java/com/fr/design/actions/file/export/AbstractExportAction.java

@ -15,8 +15,8 @@ import com.fr.file.filter.ChooseFileFilter;
import com.fr.io.exporter.DesignExportType;
import com.fr.io.exporter.ExporterKey;
import com.fr.log.FineLoggerFactory;
import com.fanruan.product.ProductConstants;
import com.fr.stable.StringUtils;
import com.fr.stable.project.ProjectConstants;
import com.fr.third.jodd.io.FileNameUtil;
import com.fr.workspace.WorkContext;
import com.fr.workspace.server.exporter.TemplateExportOperator;
@ -211,19 +211,15 @@ public abstract class AbstractExportAction<E extends JTemplate<?, ?>> extends JT
}
private void dealExporter(OutputStream outputStream, String path, final Map<String, Object> para) throws Exception {
if (path.startsWith(ProjectConstants.REPORTLETS_NAME)) {
path = path.substring(ProjectConstants.REPORTLETS_NAME.length());
}
// 没有办法处理这个 isLocal 判断,因为一个是修改参数传递结果,一个是返回值做结果
// todo 后续想想办法
if (WorkContext.getCurrent().isLocal()) {
WorkContext.getCurrent().get(TemplateExportOperator.class)
.export(exportKey(), exportType(), outputStream, path, para);
} else {
byte[] contents =
WorkContext.getCurrent().get(TemplateExportOperator.class)
.export(exportKey(), exportType(), null, path, para);
byte[] contents =
WorkContext.getCurrent().get(TemplateExportOperator.class)
.export(exportKey(), exportType(), null, path, para);
outputStream.write(contents);
}
outputStream.write(contents);
}
@Override

5
designer-base/src/main/java/com/fr/design/backup/DesignContext.java

@ -7,6 +7,7 @@ import com.fr.stable.StringUtils;
import javax.servlet.ServletContext;
import java.io.File;
import java.util.Properties;
/**
@ -17,7 +18,7 @@ import java.util.Properties;
* Created on 2024/5/14
*/
public class DesignContext extends CarinaApplicationContext {
public static final String WEB_INF = "\\WEB-INF";
public static final String WEB_INF = "WEB-INF";
private String designWebInfPath;
private String designDataPath;
@ -39,7 +40,7 @@ public class DesignContext extends CarinaApplicationContext {
public void setDesignWebInfPath(String designWebInfPath) {
this.designWebInfPath = designWebInfPath;
if (StringUtils.isNotEmpty(this.designWebInfPath)) {
this.designDataPath = this.designWebInfPath.replace(WEB_INF, StringUtils.EMPTY);
this.designDataPath = this.designWebInfPath.replace(File.separatorChar + WEB_INF, StringUtils.EMPTY);
}
FineLoggerFactory.getLogger().info("[DesignContext] designWebInfPath:{}, designDataPath:{}", this.designWebInfPath, this.designDataPath);
}

4
designer-base/src/main/java/com/fr/design/condition/DSColumnLiteConditionPane.java

@ -123,8 +123,8 @@ public class DSColumnLiteConditionPane extends LiteConditionPane<CommonCondition
UILabel operatorLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ConditionB_Operator") + ":");
operatorLabel.setPreferredSize(FineUIScale.scale(new Dimension(68, 24)));
Component[][] components = {
{ columLabel, keyColumnPane, null},
{operatorLabel, conditionOPComboBox, conditionValuePane}};
{ columLabel, operatorLabel, null},
{ keyColumnPane,conditionOPComboBox, conditionValuePane}};
double p = TableLayout.PREFERRED;
double rowSize[] = { p, p };

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

@ -6,6 +6,8 @@ import com.fanruan.workplace.http.RepositoryManager;
import com.fanruan.workplace.http.info.Stub;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.StringUtils;
import com.fr.workspace.engine.exception.RemoteDesignConnectionException;
import com.fr.workspace.engine.exception.RemoteDesignNoAuthException;
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 RemoteDesignNoAuthException();
}
}
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());

2
designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java

@ -847,7 +847,7 @@ public class MultiTemplateTabPane extends Row {
setIsCloseCurrent(true);
}
closeFormat(template);
closeSpecifiedTemplate(template);
DesignCacheManager.processByCacheTableData(() -> closeSpecifiedTemplate(template));
DesignerContext.getDesignerFrame().getContentFrame().repaint();
isShowList = false;
} else {

12
designer-base/src/main/java/com/fr/design/formula/JavaEditorPane.java

@ -32,6 +32,9 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.concurrent.ExecutionException;
import static com.fine.swing.ui.layout.Layouts.cell;
import static com.fine.swing.ui.layout.Layouts.row;
public class JavaEditorPane extends BasicPane {
private RSyntaxTextArea javaText;
@ -83,13 +86,12 @@ public class JavaEditorPane extends BasicPane {
}
UIScrollPane jt = new UIScrollPane(javaText);
JPanel toolbarPane = new JPanel(new FlowLayout(FlowLayout.LEFT));
JPanel toolbarPane = new JPanel(new BorderLayout());
UIButton saveButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Save"));
saveButton.setAction(new SaveAction());
UIButton compileButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Compile"));
compileButton.setAction(new CompilerAction());
toolbarPane.add(saveButton);
toolbarPane.add(compileButton);
toolbarPane.add(row(8, cell(saveButton), cell(compileButton)).getComponent());
this.add(toolbarPane, BorderLayout.NORTH);
this.add(jt, BorderLayout.CENTER);
@ -155,7 +157,7 @@ public class JavaEditorPane extends BasicPane {
private void saveTextToFile(String text) {
if (StringUtils.isEmpty(text)) {
return;
return;
}
if (StringUtils.isEmpty(className)) {
return;
@ -180,7 +182,7 @@ public class JavaEditorPane extends BasicPane {
@Override
protected JavaCompileInfo doInBackground() throws Exception {
return FRContext.getCommonOperator().compile(javaText.getText());
}

3
designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java

@ -2,6 +2,7 @@ package com.fr.design.gui.controlpane;
import com.fine.theme.light.ui.FineRoundBorder;
import com.fine.theme.utils.FineUIScale;
import com.fine.theme.utils.FineUIStyle;
import com.fine.theme.utils.FineUIUtils;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.constants.UIConstants;
@ -567,7 +568,7 @@ public abstract class UIListGroupControlPane extends UIControlPane implements Li
};
label.setBorder(BorderFactory.createMatteBorder(scale(1), 0, scale(1), 0, FineUIUtils.getUIColor("fill.hover", "fill.hover")));
label.setForeground(UIManager.getColor("List.wrapper.text.fontColor"));
FineUIStyle.setStyle(label, FineUIStyle.WIDGET_EVENT_LABEL);
label.setFont(label.getFont().deriveFont(scale(11F)));
label.setPreferredSize(new Dimension(this.getPreferredSize().width, scale(24)));
this.nameEdList = nameEdList;

2
designer-base/src/main/java/com/fr/design/gui/date/UICalendarPanel.java

@ -159,7 +159,7 @@ public class UICalendarPanel extends JPanel {
private JPanel createNorthPane() {
JPanel pNorth = FRGUIPaneFactory.createX_AXISBoxInnerContainer_S_Pane();
pNorth.setBackground(new Color(0xFFFFFF));
pNorth.setPreferredSize(new Dimension(1, 22));
pNorth.setPreferredSize(scale(new Dimension(1, 22)));
pNorth.add(Box.createHorizontalStrut(5));
pNorth.add(createSkipButton(Calendar.YEAR, -1, new Icon[]{

4
designer-base/src/main/java/com/fr/design/gui/date/UIDayLabel.java

@ -7,6 +7,8 @@ import java.awt.Dimension;
import java.text.SimpleDateFormat;
import java.util.Date;
import static com.fine.theme.utils.FineUIScale.scale;
public class UIDayLabel extends UILabel {
@ -29,7 +31,7 @@ public class UIDayLabel extends UILabel {
setHorizontalAlignment(UILabel.CENTER);
setFont(DesignUtils.getDefaultGUIFont());
this.date = date;
setPreferredSize(new Dimension(30, 18));
setPreferredSize(scale(new Dimension(30, 18)));
if (isSmallLabel) {
setText(dayFormat.format(date));
} else {

1
designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java

@ -48,7 +48,6 @@ public abstract class JavaScriptActionPane extends UIComboBoxPane<JavaScript> {
contentDBManiPane = new ArrayList();
contentDBManiPane.add(createDBManipulationPane());
paneList.add(new Commit2DBJavaScriptPane(this, contentDBManiPane));
paneList.add(initEmaiPane());
if (isWorkBookValid()) {
paneList.add(new ExportJavaScriptPane());
}

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) {

3
designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java

@ -1,5 +1,6 @@
package com.fr.design.mainframe.theme;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineUIScale;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.base.GraphHelper;
@ -50,7 +51,7 @@ public class TemplateThemeBlock<T extends TemplateTheme> extends JPanel {
private final TemplateThemeProfilePane<T> profilePane;
private final Icon theme4currentTemplateMarkIcon = IOUtils.readIcon("/com/fr/design/form/images/theme4currentTemplate.png");
private final Icon theme4NewTemplateMarkIcon= IOUtils.readIcon("/com/fr/design/form/images/theme4newTemplate.png");
private final Icon profileIcon = IOUtils.readIcon("/com/fr/design/icon/icon_edit.png");
private final Icon profileIcon = new LazyIcon("theme_edit");
private final boolean displayTheme4NewTemplateMarker;
private final ThumbnailPane thumbnailPane;

13
designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeDialog.java

@ -1,5 +1,6 @@
package com.fr.design.mainframe.theme.dialog;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils;
@ -14,17 +15,19 @@ import java.awt.Window;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import static com.fine.theme.utils.FineUIScale.scale;
/**
* @author Starryi
* @version 1.0
* Created by Starryi on 2021/8/16
*/
public abstract class TemplateThemeDialog extends JDialog {
public static final int DIALOG_TITLE_HEIGHT = 28;
public static final int DIALOG_TITLE_HEIGHT = scale(28);
public static final int DIALOG_BOTTOM_ACTION_BAR_HEIGHT = 30;
public static final int DIALOG_BOTTOM_ACTION_BUTTON_GAP = 10;
public static final int DIALOG_BOTTOM_ACTION_BUTTON_HEIGHT = 20;
public static final int DIALOG_BOTTOM_ACTION_BAR_HEIGHT = scale(30);
public static final int DIALOG_BOTTOM_ACTION_BUTTON_GAP = scale(10);
public static final int DIALOG_BOTTOM_ACTION_BUTTON_HEIGHT = scale(20);
private final JPanel contentContainer;
private final JPanel actionContainer;
@ -97,7 +100,7 @@ public abstract class TemplateThemeDialog extends JDialog {
private JPanel createActionsContainer(int align, UIButton... buttons) {
JPanel container = new JPanel(new FlowLayout(align, DIALOG_BOTTOM_ACTION_BUTTON_GAP, 0));
int paddingVertical = getPaddingVertical();
container.setBorder(BorderFactory.createEmptyBorder(paddingVertical, 0, paddingVertical, 0));
container.setBorder(new ScaledEmptyBorder(paddingVertical, 0, paddingVertical, 0));
if (buttons == null || buttons.length == 0) {
return container;

6
designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeGridPagesDialog.java

@ -9,14 +9,16 @@ import com.fr.design.mainframe.theme.TemplateThemeGridPane;
import javax.swing.JPanel;
import java.awt.Window;
import static com.fine.theme.utils.FineUIScale.scale;
/**
* @author Starryi
* @version 1.0
* Created by Starryi on 2021/8/13
*/
public class TemplateThemeGridPagesDialog extends TemplateThemeDialog implements TemplateThemeGridPagesPane.PageChangeListener {
public static final int CONTENT_WIDTH = TemplateThemeGridPane.CONTENT_WIDTH + 48;
public static final int CONTENT_HEIGHT = TemplateThemeGridPane.CONTENT_HEIGHT + 37;
public static final int CONTENT_WIDTH = TemplateThemeGridPane.CONTENT_WIDTH + scale(48);
public static final int CONTENT_HEIGHT = TemplateThemeGridPane.CONTENT_HEIGHT + scale(37);
protected TemplateThemeGridPagesPane overallPane;

2
designer-base/src/main/java/com/fr/design/mainframe/theme/edit/chart/ChartFontPane.java

@ -89,7 +89,7 @@ public class ChartFontPane extends BasicPane {
new Component[]{null, buttonPane}
};
return TableLayoutHelper.createGapTableLayoutPane(components, rows, columnSize, 5, 0);
return TableLayoutHelper.createGapTableLayoutPane(components, rows, columnSize, 5, 10);
}
public String getUILabelText() {

2
designer-base/src/main/java/com/fr/design/style/color/ColorChooserPreview.java

@ -30,7 +30,7 @@ public class ColorChooserPreview extends JPanel {
private String sampleText;
private static final int SWATH_WIDTH = 50;
private static final int SWATH_WIDTH = FineUIScale.scale(50);
private Color oldColor = null;

4
designer-base/src/main/java/com/fr/design/style/color/ColorSelectDialog.java

@ -16,6 +16,8 @@ import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import static com.fine.theme.utils.FineUIScale.scale;
/**
* 颜色选择器更多颜色对话框
@ -85,7 +87,7 @@ public class ColorSelectDialog extends MiddleChartDialog{
private void initComponent() {
this.setLayout(new BorderLayout());
this.add(pane,BorderLayout.NORTH);
this.setBasicDialogSize(545,500);
this.setBasicDialogSize(scale(545),scale(500));
this.setResizable(false);
this.applyClosingAction();

19
designer-base/src/main/java/com/fr/design/style/color/CustomChooserPanel.java

@ -38,6 +38,7 @@ import static com.fine.swing.ui.layout.Layouts.column;
import static com.fine.swing.ui.layout.Layouts.fix;
import static com.fine.swing.ui.layout.Layouts.flex;
import static com.fine.swing.ui.layout.Layouts.row;
import static com.fine.theme.utils.FineUIScale.scale;
/**
@ -124,17 +125,17 @@ class CustomChooserPanel extends AbstractColorChooserPanel implements ColorSelec
/**
* The default width of the gradient image.
*/
private static final int IMG_WIDTH = 180;
private static final int IMG_WIDTH = scale(180);
/**
* The default height of the gradient image.
*/
private static final int IMG_HEIGHT = 180;
private static final int IMG_HEIGHT = scale(180);
/**
* The default width of the track gradient.
*/
private static final int TRACK_WIDTH = 12;
private static final int TRACK_WIDTH = scale(12);
/**
* The UILabel for Red.
@ -597,7 +598,7 @@ class CustomChooserPanel extends AbstractColorChooserPanel implements ColorSelec
*/
protected void buildChooser() {
setLayout(new BorderLayout(10, 0));
setPreferredSize(new Dimension((int) this.getPreferredSize().getWidth(), FineUIScale.scale(180)));
setPreferredSize(new Dimension((int) this.getPreferredSize().getWidth(), scale(180)));
add(buildRightPanel(), BorderLayout.CENTER);
JPanel container = new JPanel();
container.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 0));
@ -623,9 +624,9 @@ class CustomChooserPanel extends AbstractColorChooserPanel implements ColorSelec
container.add(gradientPanel);
container.add(layeredPane);
layeredPane.setPreferredSize(FineUIScale.scale(new Dimension(12, 180)));
slider.setSize(FineUIScale.scale(new Dimension(12, 180)));
trackPanel.setSize(FineUIScale.scale(new Dimension(12, 180)));
layeredPane.setPreferredSize(scale(new Dimension(12, 180)));
slider.setSize(scale(new Dimension(12, 180)));
trackPanel.setSize(scale(new Dimension(12, 180)));
add(container, BorderLayout.WEST);
slider.addChangeListener(new SliderChangeListener());
@ -638,7 +639,7 @@ class CustomChooserPanel extends AbstractColorChooserPanel implements ColorSelec
private JPanel createGradientPanel() {
return new JPanel() {
public Dimension getPreferredSize() {
return FineUIScale.scale(new Dimension(IMG_WIDTH, IMG_HEIGHT));
return scale(new Dimension(IMG_WIDTH, IMG_HEIGHT));
}
public void paint(Graphics g) {
@ -657,7 +658,7 @@ class CustomChooserPanel extends AbstractColorChooserPanel implements ColorSelec
private JPanel createTrackPanel() {
return new JPanel() {
public Dimension getPreferredSize() {
return FineUIScale.scale(new Dimension(TRACK_WIDTH, IMG_HEIGHT));
return scale(new Dimension(TRACK_WIDTH, IMG_HEIGHT));
}
public void paint(Graphics g) {

15
designer-base/src/main/java/com/fr/design/style/color/SwatchChooserPanel.java

@ -19,6 +19,7 @@ import javax.swing.JColorChooser;
import javax.swing.JPanel;
import javax.swing.colorchooser.AbstractColorChooserPanel;
import static com.fine.theme.utils.FineUIScale.scale;
public class SwatchChooserPanel extends AbstractColorChooserPanel{
@ -35,13 +36,13 @@ public class SwatchChooserPanel extends AbstractColorChooserPanel{
abstract static class SwatchPanel extends JPanel
{
/** The width of each block. */
protected int cellWidth = 16;
protected int cellWidth = scale(16);
/** The height of each block. */
protected int cellHeight = 16;
protected int cellHeight = scale(16);
/** The gap between blocks. */
protected int gap = 1;
protected int gap = scale(1);
/** The number of rows in the swatch panel. */
protected int numRows;
@ -70,8 +71,8 @@ public class SwatchChooserPanel extends AbstractColorChooserPanel{
int width = numCols * cellWidth + (numCols - 1) * gap;
Insets insets = getInsets();
return FineUIScale.scale(new Dimension(width + insets.left + insets.right,
height + insets.top + insets.bottom));
return new Dimension(width + insets.left + insets.right,
height + insets.top + insets.bottom);
}
/**
@ -511,8 +512,8 @@ public class SwatchChooserPanel extends AbstractColorChooserPanel{
Insets insets = parent.getInsets();
return FineUIScale.scale(new Dimension(insets.left + insets.right + xmax,
insets.top + insets.bottom + ymax));
return new Dimension(insets.left + insets.right + xmax,
insets.top + insets.bottom + ymax);
}

8
designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java

@ -309,7 +309,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
conditionsTree = new JTree(new DefaultTreeModel(new ExpandMutableTreeNode()));
conditionsTree.setRootVisible(false);
conditionsTree.setShowsRootHandles(true);
conditionsTree.setBackground(UIConstants.NORMAL_BACKGROUND);
conditionsTree.setBackground(FineUIUtils.getUIColor("background.normal", "background.normal"));
conditionsTree.setForeground(UIConstants.NORMAL_BACKGROUND);
DefaultTreeCellRenderer cr = (DefaultTreeCellRenderer) conditionsTree.getCellRenderer();
cr.setForeground(UIConstants.NORMAL_BACKGROUND);
@ -740,7 +740,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return super.stopCellEditing();
}
});
((DefaultCellEditor) column1.getCellEditor()).setClickCountToStart(2);
((DefaultCellEditor) column1.getCellEditor()).setClickCountToStart(1);
//设置Column 2的Editor
column2.setCellEditor(new ColumnValueEditor());
@ -949,12 +949,12 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
}
/*
* 击以编辑
* 击以编辑
*/
@Override
public boolean isCellEditable(EventObject anEvent) {
if (anEvent instanceof MouseEvent) {
return ((MouseEvent) anEvent).getClickCount() >= 2;
return ((MouseEvent) anEvent).getClickCount() >= 1;
}
return true;
}

5
designer-base/src/main/resources/com/fine/theme/icon/theme_edit.svg

@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.43978 2.32136C9.39096 2.27255 9.39096 2.1934 9.43978 2.14459L10.0585 1.52587C10.1073 1.47705 10.1865 1.47705 10.2353 1.52587L14.4779 5.76851C14.5267 5.81733 14.5267 5.89647 14.4779 5.94529L13.8592 6.56401C13.8104 6.61282 13.7312 6.61282 13.6824 6.56401L9.43978 2.32136Z" fill="#0A1C38" fill-opacity="0.9"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.24264 14.1806C6.19576 14.2275 6.13217 14.2538 6.06586 14.2538H2C1.86193 14.2538 1.75 14.1419 1.75 14.0038V9.93793C1.75 9.87163 1.77634 9.80804 1.82322 9.76116L8.20235 3.38203C8.29998 3.2844 8.45827 3.2844 8.5559 3.38203L12.6218 7.44789C12.7194 7.54552 12.7194 7.70382 12.6218 7.80145L6.24264 14.1806ZM2.91161 10.2638L2.86742 13.1364L5.74004 13.0922L11.2076 7.62467L8.37913 4.79624L2.91161 10.2638Z" fill="#0A1C38" fill-opacity="0.9"/>
<path d="M9.125 13.125C9.05596 13.125 9 13.1809 9 13.25V14.125C9 14.194 9.05596 14.25 9.125 14.25H14.375C14.444 14.25 14.5 14.194 14.5 14.125V13.25C14.5 13.1809 14.444 13.125 14.375 13.125H9.125Z" fill="#0A1C38" fill-opacity="0.9"/>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

4
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",
@ -442,7 +443,8 @@
"layout_bottom": "layout/layout_bottom.svg",
"layout_left": "layout/layout_left.svg",
"layout_right": "layout/layout_right.svg",
"layout_top_right": "layout/layout_top_right.svg"
"layout_top_right": "layout/layout_top_right.svg",
"theme_edit": "theme_edit.svg"
}
}

8
designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties

@ -305,7 +305,7 @@ ComboBox.maximumRowCount = 15
ComboBox.buttonStyle = auto
ComboBox.background = #FFF
ComboBox.buttonBackground = $ComboBox.background
ComboBox.buttonEditableBackground = darken($ComboBox.background,2%)
ComboBox.buttonEditableBackground = $ComboBox.background
ComboBox.buttonSeparatorColor = $ComboBox.background
ComboBox.buttonDisabledSeparatorColor = $Component.disabledBorderColor
ComboBox.buttonArrowColor = @buttonArrowColor
@ -1397,4 +1397,8 @@ chart.selectedBorderColor = #2576EF
[style]Label.detailLabel = \
foreground: fade(@foreground, 90%); \
background: $fill.normal;
background: $fill.normal;
[style]Label.widgetEventLabel = \
foreground: $List.wrapper.text.fontColor; \
background: $fill.normal;

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();
}
}

1
designer-realize/src/main/java/com/fanruan/boot/env/function/DesignComponent.java vendored

@ -335,7 +335,6 @@ public class DesignComponent {
private static NameableCreator[] hyperlinkTypes() {
return new NameableCreator[]{
new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Hyperlink_Reportlet"), ReportletHyperlink.class, ReportletHyperlinkPane.ChartNoRename.class),
new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Email"), EmailJavaScript.class, EmailPane.class),
new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Hyperlink_Web_Link"), WebHyperlink.class, WebHyperlinkPane.ChartNoRename.class),
new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_JavaScript_Dynamic_Parameters"), ParameterJavaScript.class, ParameterJavaScriptPane.ChartNoRename.class),
new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_JavaScript"), JavaScriptImpl.class, JavaScriptImplPane.ChartNoRename.class),

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() {

41
designer-realize/src/main/java/com/fr/design/report/ReportEnginePane.java

@ -93,12 +93,11 @@ public class ReportEnginePane extends BasicBeanPane<LayerReportAttr> {
outReportEnginePane.add(createReportEnginePane());
JPanel outAdvicePane = new JPanel();
outAdvicePane.setLayout(FRGUIPaneFactory.createBorderLayout());
outAdvicePane.setPreferredSize(new Dimension(FineUIScale.scale(600), FineUIScale.scale(160)));
outAdvicePane.add(createAdvicePane());
this.add(column(20,
cell(wrapComponentWithTitle(outReportEnginePane, Toolkit.i18nText("Fine-Design_Report_Report_Engine_Attribute"))),
cell(wrapComponentWithTitle(outPagingEngineSelectPane, Toolkit.i18nText("Fine-Design_Report_Paging_Engine_Select"))).weight(1.0),
cell(wrapComponentWithTitle(outPagingEngineSelectPane, Toolkit.i18nText("Fine-Design_Report_Paging_Engine_Select"))),
cell(wrapComponentWithTitle(outAdvicePane, Toolkit.i18nText("Fine-Design_Report_Advice"))))
.getComponent());
}
@ -123,8 +122,6 @@ public class ReportEnginePane extends BasicBeanPane<LayerReportAttr> {
createEngineXSettingPane();
createLineEngineSettingPane();
outLineEngineSettingPane.setVisible(false);
outEngineXSettingPane.setPreferredSize(new Dimension(scale(625), scale(220)));
outLineEngineSettingPane.setPreferredSize(new Dimension(scale(625), scale(220)));
engineSettingPane.add(box(cell(outEngineXSettingPane),
cell(outLineEngineSettingPane)).getComponent()
, BorderLayout.WEST);
@ -157,18 +154,18 @@ public class ReportEnginePane extends BasicBeanPane<LayerReportAttr> {
rowCountPanel.add(rowCountBox);
JPanel tip = createTipPane(Toolkit.i18nText("Fine-Design_Report_Engine_X_tip"));
engineXSettingPane.add(row(20,
column(10,
column(fix(6), cell(title)),
cell(new UILabel()),
cell(new UILabel()),
cell(new UILabel())
column(
column(fix(6), cell(title)),
cell(new UILabel()),
cell(new UILabel()),
cell(new UILabel())
),
column(10,
cell(pageQueryBoxPanel),
cell(engineXPageQueryPane),
cell(rowCountPanel),
cell(tip)))
column(
cell(pageQueryBoxPanel),
cell(engineXPageQueryPane),
cell(rowCountPanel),
cell(tip)))
.getComponent());
outEngineXSettingPane.add(engineXSettingPane);
}
@ -189,14 +186,14 @@ public class ReportEnginePane extends BasicBeanPane<LayerReportAttr> {
lineEnginePageQueryBox.addActionListener(new SelectActionListener(lineEnginePageQueryBox, lineEnginePageQueryPane));
JPanel tipPane = createTipPane(Toolkit.i18nText("Fine-Design_Report_Line_Engine_tip"));
lineEngineSettingPane.add(row(20,
column(10,
column(fix(6), cell(title)),
cell(new UILabel()),
cell(new UILabel())),
column(10,
cell(pageQueryBoxPanel),
cell(lineEnginePageQueryPane),
cell(tipPane)))
column(
column(fix(6), cell(title)),
cell(new UILabel()),
cell(new UILabel())),
column(
cell(pageQueryBoxPanel),
cell(lineEnginePageQueryPane),
cell(tipPane)))
.getComponent());
outLineEngineSettingPane.add(lineEngineSettingPane);
}

26
designer-realize/src/main/java/com/fr/design/report/WriteShortCutsPane.java

@ -37,11 +37,11 @@ public class WriteShortCutsPane extends JPanel{
private UILabel nextRowHK;
private UILabel preCol;
private UILabel preRow;
public WriteShortCutsPane(){
this.setLayout(new BorderLayout());
this.add(createContentPane(), BorderLayout.NORTH);
if(!ServerPreferenceConfig.getInstance().isWriteShortCuts()){
nextColString = "Enter";
nextRowString = "Tab";
@ -60,10 +60,10 @@ public class WriteShortCutsPane extends JPanel{
return contentPane;
}
private JPanel getFeatureNamePane(){
JPanel featureNamePane = new JPanel(new BorderLayout());
featureNamePane.setBorder(BorderFactory.createEmptyBorder(16, 0, 0, 0));
featureNamePane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0));
UILabel name = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Feature_Name"), SwingConstants.RIGHT);
UILabel nextCol = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Next_Column"), SwingConstants.CENTER);
UILabel nextRow = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Next_Row"), SwingConstants.CENTER);
@ -75,13 +75,13 @@ public class WriteShortCutsPane extends JPanel{
JPanel centerPane = new JPanel(new BorderLayout());
centerPane.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0));
centerPane.add(column(24,
centerPane.add(column(10,
row(10, cell(name).weight(0.13), cell(nextCol).weight(0.15), cell(new JPanel()).weight(0.12), cell(nextRow).weight(0.15), flex(0.45)),
row(10, cell(shortName).weight(0.13), cell(nextColHK).weight(0.15), cell(switchBtnPane).weight(0.12), cell(nextRowHK).weight(0.15), flex(0.45))
).getComponent());
featureNamePane.add(centerPane, BorderLayout.CENTER);
return featureNamePane;
}
@ -96,7 +96,7 @@ public class WriteShortCutsPane extends JPanel{
private JPanel getHintsPane(){
JPanel hintsPane = new JPanel(new BorderLayout());
hintsPane.setBorder(BorderFactory.createEmptyBorder(16, 0, 0, 0));
hintsPane.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0));
UILabel systemDefault = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_System_Default"), SwingConstants.RIGHT);
UILabel preColText = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Previous_Column"), SwingConstants.CENTER);
@ -107,19 +107,19 @@ public class WriteShortCutsPane extends JPanel{
JPanel centerPane = new JPanel(new BorderLayout());
centerPane.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0));
centerPane.add(column(24,
centerPane.add(column(10,
row(10, cell(systemDefault).weight(0.13), cell(preColText).weight(0.24), cell(preCol).weight(0.14), flex(0.64)),
row(10, cell(new JPanel()).weight(0.13), cell(preRowText).weight(0.24), cell(preRow).weight(0.14), flex(0.64))
).getComponent());
hintsPane.add(centerPane, BorderLayout.CENTER);
return hintsPane;
}
public ActionListener getListener(){
ActionListener actionListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String temp= nextColString;
@ -136,10 +136,10 @@ public class WriteShortCutsPane extends JPanel{
});
}
};
return actionListener;
}
private void switchColRow(){
nextColHK.setText(nextColString);
nextRowHK.setText(nextRowString);

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);

1
designer-realize/src/main/java/com/fr/design/webattr/EditToolBar.java

@ -458,7 +458,6 @@ public class EditToolBar extends BasicPane {
centerPane.setLayout(card);
centerPane.add(CUSTOM, wrapComponentWithTitle(getCustomPane(), com.fr.design.i18n.Toolkit.i18nText(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Edit") + "JS")));
centerPane.add(EXPORT, wrapComponentWithTitle(getExport(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Set_Form_Button_Property")));
centerPane.add(EMAIL, wrapComponentWithTitle(getEmail(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Set_Form_Button_Property")));
centerPane.add(NONE, FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane());
centerPane.add(APPEND_COUNT, column(LayoutConstants.VERTICAL_GAP,cell(getAppendCountPane())).getComponent());
centerPane.add(SUBMIT, wrapComponentWithTitle(getSubmitPane(), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Set_Form_Button_Property")));

6
designer-realize/src/main/java/com/fr/design/webattr/ReportWebWidgetConstants.java

@ -46,16 +46,16 @@ public class ReportWebWidgetConstants {
}
public static WidgetOption[] getPageToolBarInstance() {
return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT,
return new WidgetOption[]{FIRST, PREVIOUS, PAGENAVI, NEXT, LAST, SCALE, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT,
SETPRINTEROFFSET, CUSTOM_BUTTON};
}
public static WidgetOption[] getViewToolBarInstance() {
return new WidgetOption[]{PAGESETUP, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, SETPRINTEROFFSET, PRINTPREVIEW, CUSTOM_BUTTON};
return new WidgetOption[]{PAGESETUP, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, SETPRINTEROFFSET, PRINTPREVIEW, CUSTOM_BUTTON};
}
public static WidgetOption[] getWriteToolBarInstance() {
return new WidgetOption[]{SUBMIT, VERIFY, EMAIL, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, IMPORTEXCELDATA, SHOWCELLVALUE,
return new WidgetOption[]{SUBMIT, VERIFY, EXPORT, PDF, EXCELP, EXCELO, EXCELS, WORD, NEW_PRINT, PRINT, FLASHPRINT, APPLETPRINT, PDFPRINT, IMPORTEXCELDATA, SHOWCELLVALUE,
APPENDCOLUMNROW, DELETECOLUMNROW, SETPRINTEROFFSET, CUSTOM_BUTTON, WRITESTASH, WRITESTASHCLEAR, IMPORTEXCELDATA_CUSTOMIZED,
IMPORTEXCEL, IMPORTEXCEL_COVER, IMPORTEXCEL_CLEAN, IMPORTEXCEL_APPEND};
}

Loading…
Cancel
Save