Browse Source

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

fbp/release
Anner 3 months ago
parent
commit
4a3f5cbe6d
  1. 1
      designer-base/src/main/java/com/fine/theme/utils/FineUIStyle.java
  2. 12
      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. 4
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataCreatorProducer.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. 4
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java
  9. 34
      designer-base/src/main/java/com/fr/design/env/HttpWorkspaceConnector.java
  10. 2
      designer-base/src/main/java/com/fr/design/file/MultiTemplateTabPane.java
  11. 8
      designer-base/src/main/java/com/fr/design/formula/JavaEditorPane.java
  12. 3
      designer-base/src/main/java/com/fr/design/gui/controlpane/UIListGroupControlPane.java
  13. 2
      designer-base/src/main/java/com/fr/design/gui/date/UICalendarPanel.java
  14. 4
      designer-base/src/main/java/com/fr/design/gui/date/UIDayLabel.java
  15. 1
      designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java
  16. 3
      designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java
  17. 13
      designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeDialog.java
  18. 6
      designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeGridPagesDialog.java
  19. 2
      designer-base/src/main/java/com/fr/design/mainframe/theme/edit/chart/ChartFontPane.java
  20. 2
      designer-base/src/main/java/com/fr/design/style/color/ColorChooserPreview.java
  21. 4
      designer-base/src/main/java/com/fr/design/style/color/ColorSelectDialog.java
  22. 19
      designer-base/src/main/java/com/fr/design/style/color/CustomChooserPanel.java
  23. 15
      designer-base/src/main/java/com/fr/design/style/color/SwatchChooserPanel.java
  24. 8
      designer-base/src/main/java/com/fr/design/write/submit/DBManipulationPane.java
  25. 5
      designer-base/src/main/resources/com/fine/theme/icon/theme_edit.svg
  26. 3
      designer-base/src/main/resources/com/fine/theme/light/ui/fine_light.icon.json
  27. 6
      designer-base/src/main/resources/com/fine/theme/light/ui/laf/FineLightLaf.properties
  28. 1
      designer-realize/src/main/java/com/fanruan/boot/env/function/DesignComponent.java
  29. 20
      designer-realize/src/main/java/com/fanruan/boot/init/DesignWorkContextComponent.java
  30. 13
      designer-realize/src/main/java/com/fr/design/report/ReportEnginePane.java
  31. 8
      designer-realize/src/main/java/com/fr/design/report/WriteShortCutsPane.java
  32. 1
      designer-realize/src/main/java/com/fr/design/webattr/EditToolBar.java
  33. 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 WHITE_BUTTON = "whiteButton";
String ORIGINAL_BUTTON = "originalButton"; String ORIGINAL_BUTTON = "originalButton";
String DETAIL_LABEL = "detailLabel"; String DETAIL_LABEL = "detailLabel";
String WIDGET_EVENT_LABEL = "widgetEventLabel";
/** /**

12
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.DesignExportType;
import com.fr.io.exporter.ExporterKey; import com.fr.io.exporter.ExporterKey;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fanruan.product.ProductConstants;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.project.ProjectConstants;
import com.fr.third.jodd.io.FileNameUtil; import com.fr.third.jodd.io.FileNameUtil;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.fr.workspace.server.exporter.TemplateExportOperator; import com.fr.workspace.server.exporter.TemplateExportOperator;
@ -211,20 +211,16 @@ public abstract class AbstractExportAction<E extends JTemplate<?, ?>> extends JT
} }
private void dealExporter(OutputStream outputStream, String path, final Map<String, Object> para) throws Exception { 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 = byte[] contents =
WorkContext.getCurrent().get(TemplateExportOperator.class) WorkContext.getCurrent().get(TemplateExportOperator.class)
.export(exportKey(), exportType(), null, path, para); .export(exportKey(), exportType(), null, path, para);
outputStream.write(contents); outputStream.write(contents);
} }
}
@Override @Override
public void update() { public void update() {

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 javax.servlet.ServletContext;
import java.io.File;
import java.util.Properties; import java.util.Properties;
/** /**
@ -17,7 +18,7 @@ import java.util.Properties;
* Created on 2024/5/14 * Created on 2024/5/14
*/ */
public class DesignContext extends CarinaApplicationContext { 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 designWebInfPath;
private String designDataPath; private String designDataPath;
@ -39,7 +40,7 @@ public class DesignContext extends CarinaApplicationContext {
public void setDesignWebInfPath(String designWebInfPath) { public void setDesignWebInfPath(String designWebInfPath) {
this.designWebInfPath = designWebInfPath; this.designWebInfPath = designWebInfPath;
if (StringUtils.isNotEmpty(this.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); 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") + ":"); UILabel operatorLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_ConditionB_Operator") + ":");
operatorLabel.setPreferredSize(FineUIScale.scale(new Dimension(68, 24))); operatorLabel.setPreferredSize(FineUIScale.scale(new Dimension(68, 24)));
Component[][] components = { Component[][] components = {
{ columLabel, keyColumnPane, null}, { columLabel, operatorLabel, null},
{operatorLabel, conditionOPComboBox, conditionValuePane}}; { keyColumnPane,conditionOPComboBox, conditionValuePane}};
double p = TableLayout.PREFERRED; double p = TableLayout.PREFERRED;
double rowSize[] = { p, p }; double rowSize[] = { p, p };

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

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.DCFilterQueryBean;
import com.fr.datacenters.tabledata.bean.DCTableDataBean; import com.fr.datacenters.tabledata.bean.DCTableDataBean;
import com.fr.datacenters.tabledata.filter.DCFilter; 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.bridge.exec.JSBridge;
import com.fr.design.dialog.DialogActionListener; import com.fr.design.dialog.DialogActionListener;
import com.fr.design.dialog.UIDialog; import com.fr.design.dialog.UIDialog;
@ -37,7 +38,7 @@ import java.util.stream.Collectors;
* Created on 2024/6/17 * Created on 2024/6/17
*/ */
@JsAccessible @JsAccessible
public class DatacentersJSBridge { public class DCTableDataJSBridge {
private static final String EVENT_FORMULA_UPDATE = "OK"; private static final String EVENT_FORMULA_UPDATE = "OK";
private static final String EVENT_FORMULA_CANCEL = "CANCEL"; private static final String EVENT_FORMULA_CANCEL = "CANCEL";
@ -47,25 +48,25 @@ public class DatacentersJSBridge {
* @param window js环境的window对象 * @param window js环境的window对象
* @return 桥接实例 * @return 桥接实例
*/ */
public static DatacentersJSBridge getBridge(JsObject window) { public static DCTableDataJSBridge getBridge(JsObject window) {
return new DatacentersJSBridge(window); return new DCTableDataJSBridge(window);
} }
private final JsObject window; private final JsObject window;
private DatacentersJSBridge(JsObject window) { private DCTableDataJSBridge(JsObject window) {
this.window = window; this.window = window;
} }
private static DatacentersPane relationPanel; private static DCTableDataPane relationPanel;
/** /**
* 设置窗口用于打开对话框的层级 * 设置窗口用于打开对话框的层级
* *
* @param panel 面板 * @param panel 面板
*/ */
public static void relationPanel(DatacentersPane panel) { public static void relationPanel(DCTableDataPane panel) {
relationPanel = panel; relationPanel = panel;
} }
@ -161,7 +162,9 @@ public class DatacentersJSBridge {
JxUIPane.DEFAULT_EXECUTOR.submit(() -> { JxUIPane.DEFAULT_EXECUTOR.submit(() -> {
try { try {
DCTableDataBean decoded = EmbedJson.decodeValue(tableData, DCTableDataBean.class); 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(); DCFilterQueryBean queryBean = dcFilter.toQueryBean();
String encode = EmbedJson.encode(queryBean); String encode = EmbedJson.encode(queryBean);
callback.invoke(window, encode); 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.DCTableData;
import com.fr.datacenters.tabledata.bean.DCNameBean; import com.fr.datacenters.tabledata.bean.DCNameBean;
import com.fr.datacenters.tabledata.bean.DCTableDataBean; 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.data.tabledata.tabledatapane.AbstractTableDataPane;
import com.fr.design.dialog.DialogActionListener; import com.fr.design.dialog.DialogActionListener;
import com.fr.design.dialog.UIDialog; import com.fr.design.dialog.UIDialog;
@ -14,10 +15,15 @@ import com.fr.json.revise.EmbedJson;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.third.guava.collect.ImmutableMap; import com.fr.third.guava.collect.ImmutableMap;
import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContext;
import com.teamdev.jxbrowser.browser.callback.InjectJsCallback;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Window; 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 * @since 11.0
* Created on 2024/6/17 * 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); private static final JxEngine JX_ENGINE = JxEngine.newInstance(false);
@ -37,31 +43,7 @@ public class DatacentersPane extends AbstractTableDataPane<DCTableData> {
// 用于复制粘贴场景 // 用于复制粘贴场景
private DCTableData dcTableData; private DCTableData dcTableData;
/** public DCTableDataPane() {
* 借用只运行一次
*/
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() {
setLayout(new BorderLayout()); setLayout(new BorderLayout());
dataCenterJxUIPane = getJxUIPane(); dataCenterJxUIPane = getJxUIPane();
add(dataCenterJxUIPane, BorderLayout.CENTER); add(dataCenterJxUIPane, BorderLayout.CENTER);
@ -73,7 +55,7 @@ public class DatacentersPane extends AbstractTableDataPane<DCTableData> {
return new JxUIPane.Builder<String>() return new JxUIPane.Builder<String>()
.engine(JX_ENGINE) .engine(JX_ENGINE)
.namespace(DATA_CENTER) .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", .withEMB("com/fr/design/data/tabledata/datacenter/web/data-choose.prod.html",
ImmutableMap.of("fineServletURL", getDatacentersUrl())) ImmutableMap.of("fineServletURL", getDatacentersUrl()))
.build(); .build();
@ -96,9 +78,11 @@ public class DatacentersPane extends AbstractTableDataPane<DCTableData> {
@Override @Override
public void populateBean(DCTableData ob) { public void populateBean(DCTableData ob) {
DatacentersJSBridge.relationPanel(this); DCTableDataJSBridge.relationPanel(this);
dcTableData = ob; dcTableData = ob;
dataCenterJxUIPane.populate(EmbedJson.encode(ob.toBean())); dataCenterJxUIPane.populate(EmbedJson.encode(ob.toBean()));
String[] allDSNames = DesignTableDataManager.getAllDSNames(DesignTableDataManager.getEditingTableDataSource());
dataCenterJxUIPane.executeJS(DATA_CENTER + DOT + "datasetNames=" + EmbedJson.encode(allDSNames));
} }

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

34
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.fanruan.workplace.http.info.Stub;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.stable.StringUtils; 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.authority.RemoteAuthorityRepository;
import com.fr.workspace.server.repository.compatible.register.CompatibleRegister; import com.fr.workspace.server.repository.compatible.register.CompatibleRegister;
import com.fr.workspace.server.repository.connect.FineWorkspaceHttpClient; import com.fr.workspace.server.repository.connect.FineWorkspaceHttpClient;
@ -44,6 +46,7 @@ public class HttpWorkspaceConnector implements WorkspaceConnector {
LoginResponseInfoBean bean; LoginResponseInfoBean bean;
try { try {
bean = RemoteAuthorityRepository.getInstance().login(createLoginBean(connectionInfo)); bean = RemoteAuthorityRepository.getInstance().login(createLoginBean(connectionInfo));
checkValidAndUpdateInfo(client, connectionInfo, bean);
} finally { } finally {
client.closePool(); client.closePool();
} }
@ -65,12 +68,7 @@ public class HttpWorkspaceConnector implements WorkspaceConnector {
throw new RuntimeException("Empty token, try connect again and check server"); throw new RuntimeException("Empty token, try connect again and check server");
} }
FineLoggerFactory.getLogger().info("[connector] infos:{}", bean.getAccessToken()); FineLoggerFactory.getLogger().info("[connector] infos:{}", bean.getAccessToken());
WorkspaceConnection connection = new WorkspaceConnection( checkValidAndUpdateInfo(client, connectionInfo, bean);
UUID.randomUUID().toString(),
connectionInfo.getUserName(),
HttpConstants.AUTHORIZATION_PREFIX + bean.getAccessToken(),
InetAddress.getLocalHost().getHostAddress());
client.updateConnection(connection);
client.startHeartBeat(); client.startHeartBeat();
} catch (Exception e) { } catch (Exception e) {
client.closePool(); client.closePool();
@ -81,6 +79,30 @@ public class HttpWorkspaceConnector implements WorkspaceConnector {
return client; 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) { private LoginRequestInfoBean createLoginBean(WorkspaceConnectionInfo connectionInfo) {
LoginRequestInfoBean bean = new LoginRequestInfoBean(); LoginRequestInfoBean bean = new LoginRequestInfoBean();
bean.setUsername(connectionInfo.getUserName()); 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); setIsCloseCurrent(true);
} }
closeFormat(template); closeFormat(template);
closeSpecifiedTemplate(template); DesignCacheManager.processByCacheTableData(() -> closeSpecifiedTemplate(template));
DesignerContext.getDesignerFrame().getContentFrame().repaint(); DesignerContext.getDesignerFrame().getContentFrame().repaint();
isShowList = false; isShowList = false;
} else { } else {

8
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.ArrayList;
import java.util.concurrent.ExecutionException; 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 { public class JavaEditorPane extends BasicPane {
private RSyntaxTextArea javaText; private RSyntaxTextArea javaText;
@ -83,13 +86,12 @@ public class JavaEditorPane extends BasicPane {
} }
UIScrollPane jt = new UIScrollPane(javaText); 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")); UIButton saveButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Save"));
saveButton.setAction(new SaveAction()); saveButton.setAction(new SaveAction());
UIButton compileButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Compile")); UIButton compileButton = new UIButton(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Compile"));
compileButton.setAction(new CompilerAction()); compileButton.setAction(new CompilerAction());
toolbarPane.add(saveButton); toolbarPane.add(row(8, cell(saveButton), cell(compileButton)).getComponent());
toolbarPane.add(compileButton);
this.add(toolbarPane, BorderLayout.NORTH); this.add(toolbarPane, BorderLayout.NORTH);
this.add(jt, BorderLayout.CENTER); this.add(jt, BorderLayout.CENTER);

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.light.ui.FineRoundBorder;
import com.fine.theme.utils.FineUIScale; import com.fine.theme.utils.FineUIScale;
import com.fine.theme.utils.FineUIStyle;
import com.fine.theme.utils.FineUIUtils; import com.fine.theme.utils.FineUIUtils;
import com.fr.design.beans.BasicBeanPane; import com.fr.design.beans.BasicBeanPane;
import com.fr.design.constants.UIConstants; 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.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.setFont(label.getFont().deriveFont(scale(11F)));
label.setPreferredSize(new Dimension(this.getPreferredSize().width, scale(24))); label.setPreferredSize(new Dimension(this.getPreferredSize().width, scale(24)));
this.nameEdList = nameEdList; 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() { private JPanel createNorthPane() {
JPanel pNorth = FRGUIPaneFactory.createX_AXISBoxInnerContainer_S_Pane(); JPanel pNorth = FRGUIPaneFactory.createX_AXISBoxInnerContainer_S_Pane();
pNorth.setBackground(new Color(0xFFFFFF)); 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(Box.createHorizontalStrut(5));
pNorth.add(createSkipButton(Calendar.YEAR, -1, new Icon[]{ 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.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import static com.fine.theme.utils.FineUIScale.scale;
public class UIDayLabel extends UILabel { public class UIDayLabel extends UILabel {
@ -29,7 +31,7 @@ public class UIDayLabel extends UILabel {
setHorizontalAlignment(UILabel.CENTER); setHorizontalAlignment(UILabel.CENTER);
setFont(DesignUtils.getDefaultGUIFont()); setFont(DesignUtils.getDefaultGUIFont());
this.date = date; this.date = date;
setPreferredSize(new Dimension(30, 18)); setPreferredSize(scale(new Dimension(30, 18)));
if (isSmallLabel) { if (isSmallLabel) {
setText(dayFormat.format(date)); setText(dayFormat.format(date));
} else { } 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 = new ArrayList();
contentDBManiPane.add(createDBManipulationPane()); contentDBManiPane.add(createDBManipulationPane());
paneList.add(new Commit2DBJavaScriptPane(this, contentDBManiPane)); paneList.add(new Commit2DBJavaScriptPane(this, contentDBManiPane));
paneList.add(initEmaiPane());
if (isWorkBookValid()) { if (isWorkBookValid()) {
paneList.add(new ExportJavaScriptPane()); paneList.add(new ExportJavaScriptPane());
} }

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

@ -1,5 +1,6 @@
package com.fr.design.mainframe.theme; package com.fr.design.mainframe.theme;
import com.fine.theme.icon.LazyIcon;
import com.fine.theme.utils.FineUIScale; import com.fine.theme.utils.FineUIScale;
import com.formdev.flatlaf.util.ScaledEmptyBorder; import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.base.GraphHelper; import com.fr.base.GraphHelper;
@ -50,7 +51,7 @@ public class TemplateThemeBlock<T extends TemplateTheme> extends JPanel {
private final TemplateThemeProfilePane<T> profilePane; private final TemplateThemeProfilePane<T> profilePane;
private final Icon theme4currentTemplateMarkIcon = IOUtils.readIcon("/com/fr/design/form/images/theme4currentTemplate.png"); 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 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 boolean displayTheme4NewTemplateMarker;
private final ThumbnailPane thumbnailPane; 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; package com.fr.design.mainframe.theme.dialog;
import com.formdev.flatlaf.util.ScaledEmptyBorder;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
@ -14,17 +15,19 @@ import java.awt.Window;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
import static com.fine.theme.utils.FineUIScale.scale;
/** /**
* @author Starryi * @author Starryi
* @version 1.0 * @version 1.0
* Created by Starryi on 2021/8/16 * Created by Starryi on 2021/8/16
*/ */
public abstract class TemplateThemeDialog extends JDialog { 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_BAR_HEIGHT = scale(30);
public static final int DIALOG_BOTTOM_ACTION_BUTTON_GAP = 10; public static final int DIALOG_BOTTOM_ACTION_BUTTON_GAP = scale(10);
public static final int DIALOG_BOTTOM_ACTION_BUTTON_HEIGHT = 20; public static final int DIALOG_BOTTOM_ACTION_BUTTON_HEIGHT = scale(20);
private final JPanel contentContainer; private final JPanel contentContainer;
private final JPanel actionContainer; private final JPanel actionContainer;
@ -97,7 +100,7 @@ public abstract class TemplateThemeDialog extends JDialog {
private JPanel createActionsContainer(int align, UIButton... buttons) { private JPanel createActionsContainer(int align, UIButton... buttons) {
JPanel container = new JPanel(new FlowLayout(align, DIALOG_BOTTOM_ACTION_BUTTON_GAP, 0)); JPanel container = new JPanel(new FlowLayout(align, DIALOG_BOTTOM_ACTION_BUTTON_GAP, 0));
int paddingVertical = getPaddingVertical(); 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) { if (buttons == null || buttons.length == 0) {
return container; 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 javax.swing.JPanel;
import java.awt.Window; import java.awt.Window;
import static com.fine.theme.utils.FineUIScale.scale;
/** /**
* @author Starryi * @author Starryi
* @version 1.0 * @version 1.0
* Created by Starryi on 2021/8/13 * Created by Starryi on 2021/8/13
*/ */
public class TemplateThemeGridPagesDialog extends TemplateThemeDialog implements TemplateThemeGridPagesPane.PageChangeListener { public class TemplateThemeGridPagesDialog extends TemplateThemeDialog implements TemplateThemeGridPagesPane.PageChangeListener {
public static final int CONTENT_WIDTH = TemplateThemeGridPane.CONTENT_WIDTH + 48; public static final int CONTENT_WIDTH = TemplateThemeGridPane.CONTENT_WIDTH + scale(48);
public static final int CONTENT_HEIGHT = TemplateThemeGridPane.CONTENT_HEIGHT + 37; public static final int CONTENT_HEIGHT = TemplateThemeGridPane.CONTENT_HEIGHT + scale(37);
protected TemplateThemeGridPagesPane overallPane; 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} new Component[]{null, buttonPane}
}; };
return TableLayoutHelper.createGapTableLayoutPane(components, rows, columnSize, 5, 0); return TableLayoutHelper.createGapTableLayoutPane(components, rows, columnSize, 5, 10);
} }
public String getUILabelText() { 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 String sampleText;
private static final int SWATH_WIDTH = 50; private static final int SWATH_WIDTH = FineUIScale.scale(50);
private Color oldColor = null; 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.ActionEvent;
import java.awt.event.ActionListener; 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() { private void initComponent() {
this.setLayout(new BorderLayout()); this.setLayout(new BorderLayout());
this.add(pane,BorderLayout.NORTH); this.add(pane,BorderLayout.NORTH);
this.setBasicDialogSize(545,500); this.setBasicDialogSize(scale(545),scale(500));
this.setResizable(false); this.setResizable(false);
this.applyClosingAction(); 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.fix;
import static com.fine.swing.ui.layout.Layouts.flex; import static com.fine.swing.ui.layout.Layouts.flex;
import static com.fine.swing.ui.layout.Layouts.row; 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. * 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. * 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. * 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. * The UILabel for Red.
@ -597,7 +598,7 @@ class CustomChooserPanel extends AbstractColorChooserPanel implements ColorSelec
*/ */
protected void buildChooser() { protected void buildChooser() {
setLayout(new BorderLayout(10, 0)); 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); add(buildRightPanel(), BorderLayout.CENTER);
JPanel container = new JPanel(); JPanel container = new JPanel();
container.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 0)); container.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 0));
@ -623,9 +624,9 @@ class CustomChooserPanel extends AbstractColorChooserPanel implements ColorSelec
container.add(gradientPanel); container.add(gradientPanel);
container.add(layeredPane); container.add(layeredPane);
layeredPane.setPreferredSize(FineUIScale.scale(new Dimension(12, 180))); layeredPane.setPreferredSize(scale(new Dimension(12, 180)));
slider.setSize(FineUIScale.scale(new Dimension(12, 180))); slider.setSize(scale(new Dimension(12, 180)));
trackPanel.setSize(FineUIScale.scale(new Dimension(12, 180))); trackPanel.setSize(scale(new Dimension(12, 180)));
add(container, BorderLayout.WEST); add(container, BorderLayout.WEST);
slider.addChangeListener(new SliderChangeListener()); slider.addChangeListener(new SliderChangeListener());
@ -638,7 +639,7 @@ class CustomChooserPanel extends AbstractColorChooserPanel implements ColorSelec
private JPanel createGradientPanel() { private JPanel createGradientPanel() {
return new JPanel() { return new JPanel() {
public Dimension getPreferredSize() { 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) { public void paint(Graphics g) {
@ -657,7 +658,7 @@ class CustomChooserPanel extends AbstractColorChooserPanel implements ColorSelec
private JPanel createTrackPanel() { private JPanel createTrackPanel() {
return new JPanel() { return new JPanel() {
public Dimension getPreferredSize() { 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) { 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.JPanel;
import javax.swing.colorchooser.AbstractColorChooserPanel; import javax.swing.colorchooser.AbstractColorChooserPanel;
import static com.fine.theme.utils.FineUIScale.scale;
public class SwatchChooserPanel extends AbstractColorChooserPanel{ public class SwatchChooserPanel extends AbstractColorChooserPanel{
@ -35,13 +36,13 @@ public class SwatchChooserPanel extends AbstractColorChooserPanel{
abstract static class SwatchPanel extends JPanel abstract static class SwatchPanel extends JPanel
{ {
/** The width of each block. */ /** The width of each block. */
protected int cellWidth = 16; protected int cellWidth = scale(16);
/** The height of each block. */ /** The height of each block. */
protected int cellHeight = 16; protected int cellHeight = scale(16);
/** The gap between blocks. */ /** The gap between blocks. */
protected int gap = 1; protected int gap = scale(1);
/** The number of rows in the swatch panel. */ /** The number of rows in the swatch panel. */
protected int numRows; protected int numRows;
@ -70,8 +71,8 @@ public class SwatchChooserPanel extends AbstractColorChooserPanel{
int width = numCols * cellWidth + (numCols - 1) * gap; int width = numCols * cellWidth + (numCols - 1) * gap;
Insets insets = getInsets(); Insets insets = getInsets();
return FineUIScale.scale(new Dimension(width + insets.left + insets.right, return new Dimension(width + insets.left + insets.right,
height + insets.top + insets.bottom)); height + insets.top + insets.bottom);
} }
/** /**
@ -511,8 +512,8 @@ public class SwatchChooserPanel extends AbstractColorChooserPanel{
Insets insets = parent.getInsets(); Insets insets = parent.getInsets();
return FineUIScale.scale(new Dimension(insets.left + insets.right + xmax, return new Dimension(insets.left + insets.right + xmax,
insets.top + insets.bottom + ymax)); 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 = new JTree(new DefaultTreeModel(new ExpandMutableTreeNode()));
conditionsTree.setRootVisible(false); conditionsTree.setRootVisible(false);
conditionsTree.setShowsRootHandles(true); conditionsTree.setShowsRootHandles(true);
conditionsTree.setBackground(UIConstants.NORMAL_BACKGROUND); conditionsTree.setBackground(FineUIUtils.getUIColor("background.normal", "background.normal"));
conditionsTree.setForeground(UIConstants.NORMAL_BACKGROUND); conditionsTree.setForeground(UIConstants.NORMAL_BACKGROUND);
DefaultTreeCellRenderer cr = (DefaultTreeCellRenderer) conditionsTree.getCellRenderer(); DefaultTreeCellRenderer cr = (DefaultTreeCellRenderer) conditionsTree.getCellRenderer();
cr.setForeground(UIConstants.NORMAL_BACKGROUND); cr.setForeground(UIConstants.NORMAL_BACKGROUND);
@ -740,7 +740,7 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
return super.stopCellEditing(); return super.stopCellEditing();
} }
}); });
((DefaultCellEditor) column1.getCellEditor()).setClickCountToStart(2); ((DefaultCellEditor) column1.getCellEditor()).setClickCountToStart(1);
//设置Column 2的Editor //设置Column 2的Editor
column2.setCellEditor(new ColumnValueEditor()); column2.setCellEditor(new ColumnValueEditor());
@ -949,12 +949,12 @@ public class DBManipulationPane extends BasicBeanPane<DBManipulation> {
} }
/* /*
* 击以编辑 * 击以编辑
*/ */
@Override @Override
public boolean isCellEditable(EventObject anEvent) { public boolean isCellEditable(EventObject anEvent) {
if (anEvent instanceof MouseEvent) { if (anEvent instanceof MouseEvent) {
return ((MouseEvent) anEvent).getClickCount() >= 2; return ((MouseEvent) anEvent).getClickCount() >= 1;
} }
return true; 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

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

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

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

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

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() { private static NameableCreator[] hyperlinkTypes() {
return new NameableCreator[]{ 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_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_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_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), 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.HttpConstants;
import com.fanruan.workplace.http.RepositoryManager; import com.fanruan.workplace.http.RepositoryManager;
import com.fanruan.workplace.http.WorkspaceHeartBeatShell; 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.http.exception.RemoteExceptionConvert;
import com.fanruan.workplace.standard.ServerInfo; import com.fanruan.workplace.standard.ServerInfo;
import com.fanruan.workplace.standard.ServerInfoOperator; 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.base.FineObjectPool;
import com.fr.workspace.engine.client.heartbeart.FineWorkspaceHeartbeat; import com.fr.workspace.engine.client.heartbeart.FineWorkspaceHeartbeat;
import com.fr.workspace.engine.client.heartbeart.WorkspaceHeartbeat; 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.FineWorkResource;
import com.fr.workspace.engine.resource.FineWorkResourceAdaptor; import com.fr.workspace.engine.resource.FineWorkResourceAdaptor;
import com.fr.workspace.pool.WorkRPCRegister; import com.fr.workspace.pool.WorkRPCRegister;
@ -144,11 +145,12 @@ public class DesignWorkContextComponent {
private void startErrorConvert() { private void startErrorConvert() {
RemoteExceptionConvert.registerException(HttpConstants.USER_PWD_ERROR_CODE, new RemoteDesignUserPwdErrorException()); RemoteExceptionConvert.registerException(HttpConstants.USER_PWD_ERROR_CODE, new RemoteDesignUserPwdErrorHandler());
RemoteExceptionConvert.registerException(HttpConstants.USER_PWD_NEED_UPDATE, new RemoteDesignPasswordNeedUpdateException()); RemoteExceptionConvert.registerException(HttpConstants.USER_PWD_NEED_UPDATE, new RemoteDesignPasswordNeedUpdateHandler());
RemoteExceptionConvert.registerException(HttpConstants.PASSWORD_STRENGTH_ERROR_CODE, new RemoteDesignPasswordStrengthException()); RemoteExceptionConvert.registerException(HttpConstants.PASSWORD_STRENGTH_ERROR_CODE, new RemoteDesignPasswordStrengthHandler());
RemoteExceptionConvert.registerException(HttpConstants.REMOTE_AUTHORITY_ERROR_CODE, new RemoteDesignNoAuthException()); RemoteExceptionConvert.registerException(HttpConstants.REMOTE_AUTHORITY_ERROR_CODE, new RemoteDesignNoAuthHandler());
RemoteExceptionConvert.registerException(HttpConstants.PASSWORD_EMPTY_ERROR_CODE, new RemoteDesignUserPwdErrorException()); RemoteExceptionConvert.registerException(HttpConstants.PASSWORD_EMPTY_ERROR_CODE, new RemoteDesignUserPwdErrorHandler());
RemoteExceptionConvert.registerException(HttpConstants.LOGIN_LOCK, new RemoteDesignLoginLockHandler());
} }
private void supplementalCommon() { private void supplementalCommon() {

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

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

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

@ -63,7 +63,7 @@ public class WriteShortCutsPane extends JPanel{
private JPanel getFeatureNamePane(){ private JPanel getFeatureNamePane(){
JPanel featureNamePane = new JPanel(new BorderLayout()); 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 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 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); UILabel nextRow = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Next_Row"), SwingConstants.CENTER);
@ -75,7 +75,7 @@ public class WriteShortCutsPane extends JPanel{
JPanel centerPane = new JPanel(new BorderLayout()); JPanel centerPane = new JPanel(new BorderLayout());
centerPane.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); 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(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)) 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()); ).getComponent());
@ -96,7 +96,7 @@ public class WriteShortCutsPane extends JPanel{
private JPanel getHintsPane(){ private JPanel getHintsPane(){
JPanel hintsPane = new JPanel(new BorderLayout()); 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 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); UILabel preColText = new UILabel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Cursor_To_Previous_Column"), SwingConstants.CENTER);
@ -107,7 +107,7 @@ public class WriteShortCutsPane extends JPanel{
JPanel centerPane = new JPanel(new BorderLayout()); JPanel centerPane = new JPanel(new BorderLayout());
centerPane.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0)); 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(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)) row(10, cell(new JPanel()).weight(0.13), cell(preRowText).weight(0.24), cell(preRow).weight(0.14), flex(0.64))
).getComponent()); ).getComponent());

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.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(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(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(NONE, FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane());
centerPane.add(APPEND_COUNT, column(LayoutConstants.VERTICAL_GAP,cell(getAppendCountPane())).getComponent()); 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"))); 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() { 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}; SETPRINTEROFFSET, CUSTOM_BUTTON};
} }
public static WidgetOption[] getViewToolBarInstance() { 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() { 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, APPENDCOLUMNROW, DELETECOLUMNROW, SETPRINTEROFFSET, CUSTOM_BUTTON, WRITESTASH, WRITESTASHCLEAR, IMPORTEXCELDATA_CUSTOMIZED,
IMPORTEXCEL, IMPORTEXCEL_COVER, IMPORTEXCEL_CLEAN, IMPORTEXCEL_APPEND}; IMPORTEXCEL, IMPORTEXCEL_COVER, IMPORTEXCEL_CLEAN, IMPORTEXCEL_APPEND};
} }

Loading…
Cancel
Save