Browse Source

Merge branch 'feature/x' of ssh://code.fineres.com:7999/~tommy/design into feature/x

research/11.0
kuangshuai 3 years ago
parent
commit
f54a0bf010
  1. 10
      designer-base/src/main/java/com/fr/design/DesignerEnvManager.java
  2. 55
      designer-base/src/main/java/com/fr/design/data/datapane/TableDataTreePane.java
  3. 5
      designer-base/src/main/java/com/fr/design/data/tabledata/wrapper/TableDataFactory.java
  4. 4
      designer-base/src/main/java/com/fr/design/gui/style/TextFontTippedPane.java
  5. 6
      designer-base/src/main/java/com/fr/design/gui/style/TextFormatPane.java
  6. 9
      designer-base/src/main/java/com/fr/design/login/service/DesignerPassportManager.java
  7. 30
      designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeGridControlPane.java
  8. 339
      designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeGridPagesPane.java
  9. 16
      designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeGridPane.java
  10. 64
      designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeDialog.java
  11. 59
      designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeGridPagesDialog.java
  12. 107
      designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeManageDialog.java
  13. 23
      designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeProfileDialog.java
  14. 107
      designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeUsingDialog.java
  15. 9
      designer-base/src/main/java/com/fr/design/mainframe/theme/preview/FormThemePreviewPane.java
  16. 114
      designer-base/src/main/java/com/fr/design/mainframe/theme/ui/BreadcrumbBar.java
  17. 3
      designer-form/src/main/java/com/fr/design/mainframe/JForm.java
  18. 3
      designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/DownloadSuitableThemeAction.java
  19. 9
      designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/AbstractOnlineWidgetBlock.java
  20. 23
      designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/LocalWidgetBlock.java
  21. 43
      designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/OnlineWidgetBlock.java
  22. 25
      designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/PreviewWidgetBlock.java
  23. 7
      designer-realize/src/main/java/com/fr/design/actions/server/TemplateThemeManagerAction.java
  24. 3
      designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java
  25. 28
      designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java
  26. 6
      designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoPane.java
  27. 5
      designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/ThemeToggleGuide.java

10
designer-base/src/main/java/com/fr/design/DesignerEnvManager.java

@ -195,6 +195,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
private static List<SwingWorker> mapWorkerList = new ArrayList<SwingWorker>();
private boolean imageCompress = false;//图片压缩
private boolean showImageCompressMoveTip = true;
private boolean showServerDatasetAuthTip = true;
// 开启内嵌web页面的调试窗口
private boolean openDebug = false;
@ -1674,6 +1675,13 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
this.showImageCompressMoveTip = showImageCompressMoveTip;
}
public boolean isShowServerDatasetAuthTip() {
return showServerDatasetAuthTip;
}
public void setShowServerDatasetAuthTip(boolean showServerDatasetAuthTip) {
this.showServerDatasetAuthTip = showServerDatasetAuthTip;
}
public boolean isOpenDebug() {
return openDebug;
@ -1852,6 +1860,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
}
this.setEmbedServerLazyStartup(reader.getAttrAsBoolean("embedServerLazyStartup", false));
this.setShowTemplateMissingPlugin(reader.getAttrAsBoolean("showTemplateMissingPlugin", true));
this.setShowServerDatasetAuthTip(reader.getAttrAsBoolean("showServerDatasetAuthTip", true));
}
private void readReportPaneAttributions(XMLableReader reader) {
@ -2125,6 +2134,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter {
if (!this.isShowTemplateMissingPlugin()) {
writer.attr("showTemplateMissingPlugin", this.isShowTemplateMissingPlugin());
}
writer.attr("showServerDatasetAuthTip", this.isShowServerDatasetAuthTip());
writer.end();
}

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

@ -5,6 +5,7 @@ import com.fr.data.TableDataSource;
import com.fr.data.impl.DBTableData;
import com.fr.data.impl.TableDataSourceDependent;
import com.fr.design.DesignModelAdapter;
import com.fr.design.DesignerEnvManager;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.UpdateAction;
import com.fr.design.constants.UIConstants;
@ -53,10 +54,12 @@ import com.fr.plugin.manage.PluginFilter;
import com.fr.plugin.observer.PluginEvent;
import com.fr.plugin.observer.PluginEventListener;
import com.fr.stable.core.PropertyChangeAdapter;
import com.fr.workspace.WorkContext;
import org.jetbrains.annotations.NotNull;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
@ -64,6 +67,7 @@ import javax.swing.SwingWorker;
import javax.swing.ToolTipManager;
import javax.swing.tree.TreePath;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.dnd.DnDConstants;
import java.awt.event.ActionEvent;
@ -106,6 +110,7 @@ public class TableDataTreePane extends BasicTableDataTreePane {
private EsdOnAction esdAction;
private EsdOffAction esdOffAction;
private PreviewTableDataAction previewTableDataAction;
private JPanel serverDatasetAuthTipJPanel = new JPanel();
private TableDataTreePane() {
initPane();
@ -149,10 +154,12 @@ public class TableDataTreePane extends BasicTableDataTreePane {
UIScrollPane scrollPane = new UIScrollPane(tableDataTree);
scrollPane.setBorder(null);
initServerDatasetAuthTipJPanel();
initButtonGroup();
JPanel jPanel = new JPanel(new BorderLayout(0, 0));
JPanel buttonPane = new JPanel(new GridLayout());
JPanel buttonPane = new JPanel(FRGUIPaneFactory.createBorderLayout());
buttonPane.add(buttonGroup, BorderLayout.CENTER);
buttonPane.add(serverDatasetAuthTipJPanel, BorderLayout.SOUTH);
jPanel.add(buttonPane, BorderLayout.NORTH);
jPanel.add(scrollPane, BorderLayout.CENTER);
this.add(jPanel, BorderLayout.CENTER);
@ -172,6 +179,38 @@ public class TableDataTreePane extends BasicTableDataTreePane {
checkButtonEnabled();
}
private void initServerDatasetAuthTipJPanel() {
String[] lineTips = Toolkit.i18nText("Fine-Design_Server_Dataset_Auth_Tip").split("\n");
serverDatasetAuthTipJPanel = new JPanel();
serverDatasetAuthTipJPanel.setLayout(new GridLayout(lineTips.length, 1));
for (int i = 0; i < lineTips.length; i++) {
String lineTip = lineTips[i];
List<JLabel> jLabels = new ArrayList<>();
jLabels.add(new JLabel(lineTip));
if (i == (lineTips.length - 1)) {
JLabel jLabel = new JLabel(Toolkit.i18nText("Fine-Design_Basic_Alphafine_No_Remind"));
jLabel.setForeground(Color.lightGray);
jLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
DesignerEnvManager.getEnvManager().setShowServerDatasetAuthTip(false);
serverDatasetAuthTipJPanel.setVisible(false);
}
});
jLabels.add(jLabel);
}
serverDatasetAuthTipJPanel.add(getLineTipJPanel(jLabels));
}
}
private JPanel getLineTipJPanel(List<JLabel> jLabels) {
JPanel jPanel = new JPanel(FRGUIPaneFactory.createLabelFlowLayout());
for (JLabel jLabel : jLabels) {
jPanel.add(jLabel);
}
return jPanel;
}
private void createPluginListener() {
//菜单栏监听
GeneralContext.listenPluginRunningChanged(new PluginEventListener(PLUGIN_LISTENER_PRIORITY) {
@ -532,6 +571,11 @@ public class TableDataTreePane extends BasicTableDataTreePane {
String[] textArray = {Toolkit.i18nText("Fine-Design_Basic_Tabledata_Source_Type_Template"), Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData")};
buttonGroup = new UIHeadGroup(textArray) {
public void tabChanged(int index) {
if (isShowServerDatasetAuthTipJPanel(textArray[index])) {
serverDatasetAuthTipJPanel.setVisible(true);
} else {
serverDatasetAuthTipJPanel.setVisible(false);
}
if (op != null) {
op.setDataMode(modeArray[buttonGroup.getSelectedIndex()]);
addMenuDef.setEnabled(modeArray[buttonGroup.getSelectedIndex()] == TEMPLATE_TABLE_DATA);
@ -539,6 +583,15 @@ public class TableDataTreePane extends BasicTableDataTreePane {
}
}
private boolean isShowServerDatasetAuthTipJPanel(String name) {
if (ComparatorUtils.equals(name, Toolkit.i18nText("Fine-Design_Basic_DS_Server_TableData"))
&& DesignerEnvManager.getEnvManager().isShowServerDatasetAuthTip()
&& !WorkContext.getCurrent().isLocal()) {
return true;
}
return false;
}
};
buttonGroup.setNeedLeftRightOutLine(false);
}

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

@ -26,6 +26,8 @@ import com.fr.general.ComparatorUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.ArrayUtils;
import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext;
import com.fr.workspace.server.authority.user.UserAuthority;
import java.lang.reflect.Constructor;
import java.util.ArrayList;
@ -175,7 +177,8 @@ public abstract class TableDataFactory {
public static String[] getSortOfChineseNameOfServerData(TableDataConfig tableDataConfig) {
clearAll();
try {
java.util.Iterator<String> nameIt = tableDataConfig.getTableDatas().keySet().iterator();
UserAuthority userAuthority = WorkContext.getCurrent().get(UserAuthority.class);
Iterator<String> nameIt = userAuthority.getAuthServerDataSetNames().iterator();
while (nameIt.hasNext()) {
String name = nameIt.next();
addName(name, tableDataConfig.getTableData(name));

4
designer-base/src/main/java/com/fr/design/gui/style/TextFontTippedPane.java

@ -9,7 +9,6 @@ import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.theme.edit.ui.LabelUtils;
import com.fr.design.widget.FRWidgetFactory;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
@ -63,8 +62,7 @@ public class TextFontTippedPane extends AbstractBasicStylePane {
private JPanel createFormatTipPane() {
JPanel container = FRGUIPaneFactory.createBorderLayout_S_Pane();
container.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L1, 0, 0, 0));
UILabel formatMigratedTip = FRWidgetFactory.createLineWrapLabel(Toolkit.i18nText("Fine-Design_Report_Format_Style_Migrated_Tip"));
formatMigratedTip.setForeground(new Color(153, 153, 153));
JTextArea formatMigratedTip = LabelUtils.createAutoWrapLabel(Toolkit.i18nText("Fine-Design_Report_Format_Style_Migrated_Tip"), new Color(153, 153, 153));
container.add(formatMigratedTip, BorderLayout.NORTH);
return container;

6
designer-base/src/main/java/com/fr/design/gui/style/TextFormatPane.java

@ -58,7 +58,6 @@ public class TextFormatPane extends AbstractBasicStylePane implements GlobalName
private static final int LABEL_DELTA_WIDTH = 8;
private static final int LABEL_HEIGHT = 15; //标签背景的范围
private static final int CURRENCY_FLAG_POINT = 6;
private static final Border LEFT_BORDER = BorderFactory.createEmptyBorder(0, 30, 0, 0);
private static final Integer[] TYPES = new Integer[]{
FormatContents.NULL, FormatContents.NUMBER,
@ -127,13 +126,12 @@ public class TextFormatPane extends AbstractBasicStylePane implements GlobalName
typeComboBox.setPreferredSize(new Dimension(155,20));
JPanel typePane = new JPanel(new BorderLayout());
typePane.add(typeComboBox, BorderLayout.CENTER);
typePane.setBorder(LEFT_BORDER);
// centerPane.setBorder(LEFT_BORDER);
typePane.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 0));
JPanel option = new JPanel(new BorderLayout());
option.add(new UILabel(Toolkit.i18nText("Fine-Design_Report_Base_Option"), SwingConstants.LEFT), BorderLayout.WEST);
roundingBox = new UICheckBox(Toolkit.i18nText("Fine-Design_Report_Base_Option_Half_Up"));
roundingBox.setBorder(BorderFactory.createEmptyBorder(0, 40, 0, 0));
roundingBox.setBorder(BorderFactory.createEmptyBorder(0, 30, 0, 0));
roundingBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {

9
designer-base/src/main/java/com/fr/design/login/service/DesignerPassportManager.java

@ -5,6 +5,7 @@ import com.fr.design.login.DesignerLoginType;
import com.fr.design.upm.event.CertificateEvent;
import com.fr.event.EventDispatcher;
import com.fr.json.JSONObject;
import com.fr.stable.StringUtils;
/**
* @author Lanlan
@ -96,6 +97,14 @@ public class DesignerPassportManager {
return uid;
}
/**
* 登出帆软通行证
*/
public void logout() {
saveUserInfo(-1, StringUtils.EMPTY, StringUtils.EMPTY, StringUtils.EMPTY, DesignerLoginType.UNKNOWN, StringUtils.EMPTY);
EventDispatcher.fire(CertificateEvent.LOGOUT, StringUtils.EMPTY);
}
/**
* 保存登录信息
*/

30
designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeManagePane.java → designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeGridControlPane.java

@ -51,34 +51,34 @@ import static com.fr.design.i18n.Toolkit.i18nText;
* @version 1.0
* Created by Starryi on 2021/8/13
*/
public class TemplateThemeManagePane<T extends TemplateTheme> extends BasicPane {
public static final int CONTENT_WIDTH = TemplateThemeListPane.CONTENT_WIDTH + 10;
public static final int CONTENT_HEIGHT = TemplateThemeListPane.CONTENT_HEIGHT + 37;
public class TemplateThemeGridControlPane<T extends TemplateTheme> extends BasicPane {
public static final int CONTENT_WIDTH = TemplateThemeGridPane.CONTENT_WIDTH + 10;
public static final int CONTENT_HEIGHT = TemplateThemeGridPane.CONTENT_HEIGHT + 37;
private final RemoveThemeAction removeAction;
private final UIButton setTheme4NewTemplateButton;
private final TemplateThemeConfig<T> config;
private final TemplateThemeListPane<T> themeListPane;
private final TemplateThemeGridPane<T> themeListPane;
private final TemplateThemeProfilePane<T> profilePane;
private final AsyncThemeFetcher<T> asyncThemeFetcher;
public static TemplateThemeManagePane<FormTheme> createFormThemesManagerPane() {
public static TemplateThemeGridControlPane<FormTheme> createFormThemesManagerPane() {
FormThemeConfig config = FormThemeConfig.getInstance();
FormThemeProfilePane editPane = new FormThemeProfilePane(config);
return new TemplateThemeManagePane<>(config, editPane);
return new TemplateThemeGridControlPane<>(config, editPane);
}
public static TemplateThemeManagePane<ReportTheme> createReportThemesManagerPane() {
public static TemplateThemeGridControlPane<ReportTheme> createReportThemesManagerPane() {
ReportThemeConfig config = ReportThemeConfig.getInstance();
ReportThemeProfilePane editPane = new ReportThemeProfilePane(config);
return new TemplateThemeManagePane<>(config, editPane);
return new TemplateThemeGridControlPane<>(config, editPane);
}
public TemplateThemeManagePane(TemplateThemeConfig<T> config, TemplateThemeProfilePane<T> profilePane) {
public TemplateThemeGridControlPane(TemplateThemeConfig<T> config, TemplateThemeProfilePane<T> profilePane) {
this.config = config;
this.profilePane = profilePane;
this.themeListPane = new TemplateThemeListPane<>(true, config, profilePane);
this.themeListPane = new TemplateThemeGridPane<>(true, config, profilePane);
this.removeAction = new RemoveThemeAction(false);
this.setTheme4NewTemplateButton = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Pane_Default_Setting"));
this.asyncThemeFetcher = new AsyncThemeFetcher<>(1, config);
@ -179,7 +179,7 @@ public class TemplateThemeManagePane<T extends TemplateTheme> extends BasicPane
@Override
public void afterRollback() {
super.afterRollback();
FineJOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TemplateThemeManagePane.this),
FineJOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TemplateThemeGridControlPane.this),
i18nText("Fine-Design_Basic_Template_Theme_Operation_Failed_Tip"),
i18nText("Fine-Design_Basic_Alert"),
JOptionPane.WARNING_MESSAGE);
@ -225,11 +225,11 @@ public class TemplateThemeManagePane<T extends TemplateTheme> extends BasicPane
@Override
public void actionPerformed(ActionEvent e) {
T theme = TemplateThemeManagePane.this.themeListPane.getSelectedTheme();
T theme = TemplateThemeGridControlPane.this.themeListPane.getSelectedTheme();
if (theme == null) {
return;
}
int result = FineJOptionPane.showConfirmDialog(SwingUtilities.getWindowAncestor(TemplateThemeManagePane.this),
int result = FineJOptionPane.showConfirmDialog(SwingUtilities.getWindowAncestor(TemplateThemeGridControlPane.this),
Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Pane_Delete_Tip", theme.getName()),
Toolkit.i18nText("Fine-Design_Basic_Delete"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
if (result == JOptionPane.YES_OPTION) {
@ -237,7 +237,7 @@ public class TemplateThemeManagePane<T extends TemplateTheme> extends BasicPane
@Override
public void afterRollback() {
super.afterRollback();
FineJOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TemplateThemeManagePane.this),
FineJOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TemplateThemeGridControlPane.this),
i18nText("Fine-Design_Basic_Template_Theme_Operation_Failed_Tip"),
i18nText("Fine-Design_Basic_Alert"),
JOptionPane.WARNING_MESSAGE);
@ -269,7 +269,7 @@ public class TemplateThemeManagePane<T extends TemplateTheme> extends BasicPane
}
private void createNewTheme(T prototypeTheme) {
Window parent = SwingUtilities.getWindowAncestor(TemplateThemeManagePane.this);
Window parent = SwingUtilities.getWindowAncestor(TemplateThemeGridControlPane.this);
TemplateThemeProfileDialog<T> profileDialog = new TemplateThemeProfileDialog<>(parent, profilePane);
try {
T theme = (T) prototypeTheme.clone();

339
designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeGridPagesPane.java

@ -0,0 +1,339 @@
package com.fr.design.mainframe.theme;
import com.fr.base.ScreenResolution;
import com.fr.base.theme.FormTheme;
import com.fr.base.theme.FormThemeConfig;
import com.fr.base.theme.ReportTheme;
import com.fr.base.theme.ReportThemeConfig;
import com.fr.base.theme.TemplateTheme;
import com.fr.base.theme.TemplateThemeConfig;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.dialog.BasicPane;
import com.fr.design.event.ChangeEvent;
import com.fr.design.event.ChangeListener;
import com.fr.design.file.HistoryTemplateListCache;
import com.fr.design.gui.frpane.UITabbedPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.mainframe.theme.dialog.TemplateThemeDialog;
import com.fr.design.mainframe.theme.provider.ThemeManageActionProvider;
import com.fr.design.mainframe.theme.ui.BreadcrumbBar;
import com.fr.stable.ArrayUtils;
import com.fr.stable.unit.FU;
import com.fr.workspace.WorkContext;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.border.CompoundBorder;
import javax.swing.border.LineBorder;
import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Stroke;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* @author Starryi
* @version 1.0
* Created by Starryi on 2021/10/9
*/
public class TemplateThemeGridPagesPane extends JPanel {
private BreadcrumbBar breadcrumbBar;
private JPanel contentPane;
private CardLayout cardLayout;
private TemplateThemeGridPagePane themeUsingPane;
private TemplateThemeGridPagePane themeManagingPane;
private PageChangeListener pageChangeListener;
private TemplateThemeGridPagePane currentTemplateThemeGridPagePane;
public TemplateThemeGridPagesPane() {
initializePane();
}
private void initializePane() {
setLayout(new BorderLayout());
setBorder(BorderFactory.createEmptyBorder(10, 10, 0, 10));
breadcrumbBar = new BreadcrumbBar();
breadcrumbBar.setBorder(BorderFactory.createEmptyBorder(0, 0, 10, 0));
add(breadcrumbBar, BorderLayout.NORTH);
contentPane = new JPanel();
contentPane.setBorder(new CompoundBorder(
new TopLineBorder(new Color(0xE0E0E1), 1),
BorderFactory.createEmptyBorder(10, 0, 0, 0)));
cardLayout = new CardLayout();
contentPane.setLayout(cardLayout);
add(contentPane, BorderLayout.CENTER);
themeUsingPane = new TemplateThemeUsingPane();
contentPane.add(themeUsingPane, themeUsingPane.getTitle());
themeManagingPane = new TemplateThemeManagingPane();
contentPane.add(themeManagingPane, themeManagingPane.getTitle());
showThemeUsingPane();
}
public void showThemeUsingPane() {
if (currentTemplateThemeGridPagePane != themeUsingPane) {
cardLayout.show(contentPane, themeUsingPane.getTitle());
currentTemplateThemeGridPagePane = themeUsingPane;
if (pageChangeListener != null) {
pageChangeListener.onPageChangeListener();
}
breadcrumbBar.clear();
breadcrumbBar.addCrumb(themeUsingPane.getTitle(), new BreadcrumbBar.BreadcrumbBackListener() {
@Override
public void onBreadcrumbBack(String text) {
cardLayout.show(contentPane, themeUsingPane.getTitle());
currentTemplateThemeGridPagePane = themeUsingPane;
if (pageChangeListener != null) {
pageChangeListener.onPageChangeListener();
}
}
});
}
}
public void showThemeManagingPane() {
if (currentTemplateThemeGridPagePane != themeManagingPane) {
cardLayout.show(contentPane, themeManagingPane.getTitle());
currentTemplateThemeGridPagePane = themeManagingPane;
if (pageChangeListener != null) {
pageChangeListener.onPageChangeListener();
}
breadcrumbBar.addCrumb(themeManagingPane.getTitle(), null);
}
}
public UIButton[] createLeftButtons() {
UIButton[] buttons = new UIButton[] {};
if (currentTemplateThemeGridPagePane != themeManagingPane && WorkContext.getCurrent().isRoot()) {
buttons = ArrayUtils.addAll(buttons, createOpenThemeManagerButton());
}
return buttons;
}
public UIButton[] createRightButtons() {
UIButton[] buttons = new UIButton[] {};
buttons = ArrayUtils.addAll(buttons, createExtraButtons());
buttons = ArrayUtils.addAll(buttons, createCompleteButton());
return buttons;
}
private UIButton createOpenThemeManagerButton() {
UIButton button = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Dialog_Title"));
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
showThemeManagingPane();
}
});
return button;
}
private UIButton[] createExtraButtons() {
List<UIButton> uiButtonList = new ArrayList<>();
Set<ThemeManageActionProvider> providers = ExtraDesignClassManager.getInstance().getArray(ThemeManageActionProvider.MARK_STRING);
for (ThemeManageActionProvider provider : providers) {
uiButtonList.add(provider.createButton(new ThemeManageActionProvider.ThemeManageActionContext() {
@Override
public TemplateThemeDialog getDialog() {
Container container = getRootPane().getParent();
if (container instanceof TemplateThemeDialog) {
return (TemplateThemeDialog) container;
}
return null;
}
@Override
public TemplateThemeConfig<? extends TemplateTheme> getConfig() {
return currentTemplateThemeGridPagePane.getConfig();
}
}));
}
return uiButtonList.toArray(new UIButton[]{});
}
private UIButton createCompleteButton() {
UIButton button = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Dialog_Complete"));
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Container container = getRootPane().getParent();
if (container instanceof TemplateThemeDialog) {
((TemplateThemeDialog) container).exit();
}
}
});
return button;
}
public void exit() {
themeUsingPane.exit();
themeManagingPane.exit();
}
public void setPageChangeListener(PageChangeListener changeListener) {
this.pageChangeListener = changeListener;
}
public interface PageChangeListener {
void onPageChangeListener();
}
public static class TopLineBorder extends LineBorder {
private final FU fu;
private TopLineBorder(Color color, int thickness) {
super(color, thickness);
fu = FU.getInstance(thickness);
}
@Override
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
Graphics2D g2d = (Graphics2D)g;
Color oldColor = g2d.getColor();
Stroke oldStroke = g2d.getStroke();
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setColor(getLineColor());
int thickness = Math.max(1, fu.toPixI(ScreenResolution.getScreenResolution()));
g2d.setStroke(new BasicStroke(thickness));
g2d.drawLine(0, 0, width, thickness);
g2d.setStroke(oldStroke);
g2d.setColor(oldColor);
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
}
}
public abstract static class TemplateThemeGridPagePane extends BasicPane {
public abstract TemplateThemeConfig<? extends TemplateTheme> getConfig();
public void exit() { }
}
public static class TemplateThemeUsingPane extends TemplateThemeGridPagePane {
private final JTemplate<?,?> template;
public final TemplateThemeGridPane<? extends TemplateTheme> themeListPane;
public TemplateThemeUsingPane() {
super();
setLayout(new BorderLayout());
setBorder(new CompoundBorder(
BorderFactory.createLineBorder(new Color(0xE0E0E1)),
BorderFactory.createEmptyBorder(0, 10, 0, 10)));
template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
TemplateThemeConfig<? extends TemplateTheme> config = template.getUsingTemplateThemeConfig();
themeListPane = new TemplateThemeGridPane<>(false, config, null);
themeListPane.startListenThemeConfig();
themeListPane.setSelectedChangeListener(new ChangeListener() {
@Override
public void fireChanged(ChangeEvent event) {
TemplateTheme theme = themeListPane.getSelectedTheme();
if (theme != null) {
template.setTemplateTheme(theme);
themeListPane.repaint();
}
}
});
add(themeListPane, BorderLayout.CENTER);
}
@Override
public TemplateThemeConfig<? extends TemplateTheme> getConfig() {
return template.getUsingTemplateThemeConfig();
}
@Override
public void exit() {
themeListPane.stopListenThemeConfig();
themeListPane.stopAsyncFetchTheme();
}
@Override
protected String title4PopupWindow() {
return Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Using_Dialog_Title");
}
}
public static class TemplateThemeManagingPane extends TemplateThemeGridPagePane {
public static final int CONTENT_WIDTH = TemplateThemeGridControlPane.CONTENT_WIDTH + 4;
public static final int CONTENT_HEIGHT = TemplateThemeGridControlPane.CONTENT_HEIGHT + 10;
private final UITabbedPane tabbedPane;
private final TemplateThemeGridControlPane<FormTheme> formThemesManagerPane;
private final TemplateThemeGridControlPane<ReportTheme> reportThemesManagerPane;
public TemplateThemeManagingPane() {
setLayout(FRGUIPaneFactory.createBorderLayout());
setPreferredSize(new Dimension(CONTENT_WIDTH, CONTENT_HEIGHT));
tabbedPane = new UITabbedPane();
add(tabbedPane, BorderLayout.CENTER);
formThemesManagerPane = TemplateThemeGridControlPane.createFormThemesManagerPane();
formThemesManagerPane.startListenThemeConfig();
reportThemesManagerPane = TemplateThemeGridControlPane.createReportThemesManagerPane();
reportThemesManagerPane.startListenThemeConfig();
tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Dialog_Form_Tab"), formThemesManagerPane);
tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Dialog_Report_Tab"), reportThemesManagerPane);
tabbedPane.setSelectedIndex(0);
JTemplate<?,?> template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
TemplateThemeConfig<? extends TemplateTheme> config = template.getUsingTemplateThemeConfig();
if (config == reportThemesManagerPane.getConfig()) {
tabbedPane.setSelectedIndex(1);
}
}
@Override
public TemplateThemeConfig<? extends TemplateTheme> getConfig() {
if (tabbedPane.getSelectedIndex() == 0) {
return FormThemeConfig.getInstance();
} else {
return ReportThemeConfig.getInstance();
}
}
@Override
public void exit() {
formThemesManagerPane.stopListenThemeConfig();
formThemesManagerPane.stopAsyncFetchTheme();
reportThemesManagerPane.stopListenThemeConfig();
reportThemesManagerPane.stopAsyncFetchTheme();
}
@Override
protected String title4PopupWindow() {
return Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Dialog_Title");
}
}
}

16
designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeListPane.java → designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeGridPane.java

@ -2,7 +2,6 @@ package com.fr.design.mainframe.theme;
import com.fr.base.theme.TemplateTheme;
import com.fr.base.theme.TemplateThemeConfig;
import com.fr.base.theme.settings.ThemeThumbnail;
import com.fr.design.designer.IntervalConstants;
import com.fr.design.dialog.BasicPane;
import com.fr.design.event.ChangeEvent;
@ -13,6 +12,7 @@ import com.fr.stable.StringUtils;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.ScrollPaneConstants;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
@ -27,7 +27,7 @@ import java.util.Map;
* @version 1.0
* Created by Starryi on 2021/8/13
*/
public class TemplateThemeListPane<T extends TemplateTheme> extends BasicPane {
public class TemplateThemeGridPane<T extends TemplateTheme> extends BasicPane {
public static final int BLOCK_COUNT_ROW_LINE = 3;
public static final int BLOCK_GAP = IntervalConstants.INTERVAL_L1;
public static final int CONTENT_WIDTH = TemplateThemeBlock.CONTENT_WIDTH * BLOCK_COUNT_ROW_LINE + BLOCK_GAP * (BLOCK_COUNT_ROW_LINE - 1) + 10;
@ -51,7 +51,7 @@ public class TemplateThemeListPane<T extends TemplateTheme> extends BasicPane {
private ChangeListener changeListener;
public TemplateThemeListPane(boolean displayTheme4NewTemplateMarker, TemplateThemeConfig<T> config, TemplateThemeProfilePane<T> profilePane) {
public TemplateThemeGridPane(boolean displayTheme4NewTemplateMarker, TemplateThemeConfig<T> config, TemplateThemeProfilePane<T> profilePane) {
this.displayTheme4NewTemplateMarker = displayTheme4NewTemplateMarker;
this.config = config;
this.profilePane = profilePane;
@ -64,14 +64,14 @@ public class TemplateThemeListPane<T extends TemplateTheme> extends BasicPane {
setLayout(FRGUIPaneFactory.createBorderLayout());
setPreferredSize(new Dimension(CONTENT_WIDTH, CONTENT_HEIGHT));
contentListPane.setBorder(BorderFactory.createEmptyBorder(BLOCK_GAP, 0, BLOCK_GAP, 0));
contentListPane.setBorder(BorderFactory.createEmptyBorder(BLOCK_GAP, 0, BLOCK_GAP, 10));
contentListPane.setLayout(new GridLayout(0, BLOCK_COUNT_ROW_LINE, BLOCK_GAP, BLOCK_GAP));
fillContentListPane();
JPanel wrapper = FRGUIPaneFactory.createBorderLayout_S_Pane();
wrapper.add(contentListPane, BorderLayout.NORTH);
UIScrollPane scrollPane = new UIScrollPane(wrapper);
UIScrollPane scrollPane = new UIScrollPane(contentListPane);
scrollPane.setPreferredSize(new Dimension(CONTENT_WIDTH, CONTENT_HEIGHT));
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
scrollPane.setBorder(BorderFactory.createEmptyBorder());
add(scrollPane, BorderLayout.CENTER);

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

@ -26,6 +26,9 @@ public abstract class TemplateThemeDialog extends JDialog {
public static final int DIALOG_BOTTOM_ACTION_BUTTON_GAP = 10;
public static final int DIALOG_BOTTOM_ACTION_BUTTON_HEIGHT = 20;
private final JPanel contentContainer;
private final JPanel actionContainer;
public TemplateThemeDialog(Window parent, String title, int contentWidth, int contentHeight) {
super(parent, ModalityType.APPLICATION_MODAL);
@ -44,25 +47,45 @@ public abstract class TemplateThemeDialog extends JDialog {
}
});
GUICoreUtils.centerWindow(this);
contentContainer = FRGUIPaneFactory.createBorderLayout_S_Pane();
actionContainer = FRGUIPaneFactory.createBorderLayout_S_Pane();
contentContainer.add(actionContainer, BorderLayout.SOUTH);
setContentPane(contentContainer);
}
protected final JPanel createDialogContentPane(JPanel contentPane, UIButton[] rightButtons) {
JPanel container = FRGUIPaneFactory.createBorderLayout_S_Pane();
container.add(contentPane, BorderLayout.CENTER);
container.add(createActionsContainer(rightButtons), BorderLayout.SOUTH);
return container;
protected void setupContentPane() {
contentContainer.add(createContentPane(), BorderLayout.CENTER, 0);
}
protected final JPanel createDialogContentPane(JPanel contentPane, UIButton[] leftButtons, UIButton[] rightButtons) {
JPanel container = FRGUIPaneFactory.createBorderLayout_S_Pane();
container.add(contentPane, BorderLayout.CENTER);
container.add(createActionsContainer(leftButtons, rightButtons), BorderLayout.SOUTH);
return container;
protected JPanel createContentPane() {
return new JPanel();
}
protected UIButton[] createLeftButtons() {
return new UIButton[] {};
}
protected UIButton[] createRightButtons() {
return new UIButton[] {};
}
private JPanel createActionsContainer(UIButton... buttons) {
return this.createActionsContainer(FlowLayout.RIGHT, buttons);
public void setupActionButtons() {
JPanel leftPane = createActionsContainer(FlowLayout.LEFT, createLeftButtons());
JPanel rightPane = createActionsContainer(FlowLayout.RIGHT, createRightButtons());
actionContainer.removeAll();
actionContainer.add(leftPane, BorderLayout.WEST);
actionContainer.add(rightPane, BorderLayout.EAST);
actionContainer.invalidate();
actionContainer.repaint();
}
protected final JPanel createDialogContentPane(JPanel contentPane, UIButton[] rightButtons) {
JPanel container = FRGUIPaneFactory.createBorderLayout_S_Pane();
container.add(contentPane, BorderLayout.CENTER);
container.add(createRightActionsContainer(rightButtons), BorderLayout.SOUTH);
return container;
}
private JPanel createActionsContainer(int align, UIButton... buttons) {
@ -84,21 +107,12 @@ public abstract class TemplateThemeDialog extends JDialog {
return container;
}
protected int getPaddingVertical(){
return (DIALOG_BOTTOM_ACTION_BAR_HEIGHT - DIALOG_BOTTOM_ACTION_BUTTON_HEIGHT) / 2;
private JPanel createRightActionsContainer(UIButton... buttons) {
return createActionsContainer(FlowLayout.RIGHT, buttons);
}
private JPanel createActionsContainer(UIButton[] leftButtons, UIButton[] rightButtons) {
JPanel leftPane = createActionsContainer(FlowLayout.LEFT, leftButtons);
JPanel rightPane = createActionsContainer(FlowLayout.RIGHT, rightButtons);
JPanel container = FRGUIPaneFactory.createBorderLayout_S_Pane();
container.add(leftPane, BorderLayout.WEST);
container.add(rightPane, BorderLayout.EAST);
return container;
private int getPaddingVertical(){
return (DIALOG_BOTTOM_ACTION_BAR_HEIGHT - DIALOG_BOTTOM_ACTION_BUTTON_HEIGHT) / 2;
}
public void exit() {

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

@ -0,0 +1,59 @@
package com.fr.design.mainframe.theme.dialog;
import com.fr.base.theme.TemplateTheme;
import com.fr.base.theme.TemplateThemeConfig;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.theme.TemplateThemeGridPagesPane;
import com.fr.design.mainframe.theme.TemplateThemeGridPane;
import javax.swing.JPanel;
/**
* @author Starryi
* @version 1.0
* Created by Starryi on 2021/8/13
*/
public class TemplateThemeGridPagesDialog extends TemplateThemeDialog implements TemplateThemeGridPagesPane.PageChangeListener {
public static final String COMPLETE_BUTTON = "theme_button_complete";
public static final int CONTENT_WIDTH = TemplateThemeGridPane.CONTENT_WIDTH + 40;
public static final int CONTENT_HEIGHT = TemplateThemeGridPane.CONTENT_HEIGHT + 37;
protected TemplateThemeGridPagesPane overallPane;
public TemplateThemeGridPagesDialog() {
super(DesignerContext.getDesignerFrame(), Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Using_Dialog_Title"), CONTENT_WIDTH, CONTENT_HEIGHT);
setupContentPane();
setupActionButtons();
}
@Override
protected JPanel createContentPane() {
overallPane = new TemplateThemeGridPagesPane();
overallPane.setPageChangeListener(this);
return overallPane;
}
@Override
protected UIButton[] createLeftButtons() {
return overallPane.createLeftButtons();
}
@Override
protected UIButton[] createRightButtons() {
return overallPane.createRightButtons();
}
@Override
public void exit() {
overallPane.exit();
super.exit();
}
@Override
public void onPageChangeListener() {
setupActionButtons();
}
}

107
designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeManageDialog.java

@ -12,8 +12,9 @@ import com.fr.design.gui.frpane.UITabbedPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate;
import com.fr.design.mainframe.theme.TemplateThemeManagePane;
import com.fr.design.mainframe.theme.TemplateThemeGridControlPane;
import com.fr.design.mainframe.theme.provider.ThemeManageActionProvider;
import javax.swing.BorderFactory;
@ -32,106 +33,10 @@ import java.util.Set;
* @version 1.0
* Created by Starryi on 2021/8/13
*/
public class TemplateThemeManageDialog extends TemplateThemeDialog {
public class TemplateThemeManageDialog extends TemplateThemeGridPagesDialog {
private final TemplateThemeManageDialogContentPane contentPane;
public TemplateThemeManageDialog(Window parent) {
super(parent, Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Dialog_Title"),
TemplateThemeManageDialogContentPane.CONTENT_WIDTH, TemplateThemeManageDialogContentPane.CONTENT_HEIGHT);
contentPane = new TemplateThemeManageDialogContentPane();
setContentPane(createDialogContentPane(contentPane, createActionButtons()));
}
@Override
public void exit(){
contentPane.exit();
super.exit();
}
private UIButton[] createActionButtons() {
List<UIButton> uiButtonList = new ArrayList<>();
Set<ThemeManageActionProvider> providers = ExtraDesignClassManager.getInstance().getArray(ThemeManageActionProvider.MARK_STRING);
for (ThemeManageActionProvider provider : providers) {
uiButtonList.add(provider.createButton(new ThemeManageActionProvider.ThemeManageActionContext() {
@Override
public TemplateThemeDialog getDialog() {
return TemplateThemeManageDialog.this;
}
@Override
public TemplateThemeConfig<? extends TemplateTheme> getConfig() {
return contentPane.getConfig();
}
}));
}
uiButtonList.add(createCompleteButton());
return uiButtonList.toArray(new UIButton[]{});
}
private UIButton createCompleteButton() {
UIButton button = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Dialog_Complete"));
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
exit();
}
});
return button;
}
public static class TemplateThemeManageDialogContentPane extends JPanel {
public static final int CONTENT_WIDTH = TemplateThemeManagePane.CONTENT_WIDTH + 24;
public static final int CONTENT_HEIGHT = TemplateThemeManagePane.CONTENT_HEIGHT + 40;
private final UITabbedPane tabbedPane;
private final TemplateThemeManagePane<FormTheme> formThemesManagerPane;
private final TemplateThemeManagePane<ReportTheme> reportThemesManagerPane;
public TemplateThemeManageDialogContentPane() {
setLayout(FRGUIPaneFactory.createBorderLayout());
setBorder(BorderFactory.createEmptyBorder(10, 10, 0, 10));
setPreferredSize(new Dimension(CONTENT_WIDTH, CONTENT_HEIGHT));
tabbedPane = new UITabbedPane();
add(tabbedPane, BorderLayout.NORTH);
formThemesManagerPane = TemplateThemeManagePane.createFormThemesManagerPane();
formThemesManagerPane.startListenThemeConfig();
reportThemesManagerPane = TemplateThemeManagePane.createReportThemesManagerPane();
reportThemesManagerPane.startListenThemeConfig();
tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Dialog_Form_Tab"), formThemesManagerPane);
tabbedPane.addTab(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Dialog_Report_Tab"), reportThemesManagerPane);
tabbedPane.setSelectedIndex(0);
JTemplate<?,?> template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
if (template != null) {
TemplateThemeConfig<? extends TemplateTheme> config = template.getUsingTemplateThemeConfig();
if (config == reportThemesManagerPane.getConfig()) {
tabbedPane.setSelectedIndex(1);
}
}
}
public TemplateThemeConfig<? extends TemplateTheme> getConfig() {
if (tabbedPane.getSelectedIndex() == 0) {
return FormThemeConfig.getInstance();
} else {
return ReportThemeConfig.getInstance();
}
}
public void exit() {
formThemesManagerPane.stopListenThemeConfig();
formThemesManagerPane.stopAsyncFetchTheme();
reportThemesManagerPane.stopListenThemeConfig();
reportThemesManagerPane.stopAsyncFetchTheme();
}
public TemplateThemeManageDialog() {
super();
overallPane.showThemeManagingPane();
}
}

23
designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeProfileDialog.java

@ -25,22 +25,33 @@ import java.util.Set;
* Created by Starryi on 2021/8/13
*/
public class TemplateThemeProfileDialog<T extends TemplateTheme> extends TemplateThemeDialog {
private static final int PADDING_VERTICAL = 4;
public static TemplateThemeProfilePane<? extends TemplateTheme> currentVisibleProfilePane;
public static final int CONTENT_WIDTH = 1010;
public static final int CONTENT_HEIGHT = 542;
private final TemplateThemeProfilePane<T> profilePane;
public TemplateThemeProfileDialog(Window parent, TemplateThemeProfilePane<T> profilePane) {
super(parent, profilePane.getTitle(), CONTENT_WIDTH, CONTENT_HEIGHT);
this.profilePane = profilePane;
TemplateThemeProfileDialog.currentVisibleProfilePane = profilePane;
setupContentPane();
setupActionButtons();
}
@Override
protected JPanel createContentPane() {
JPanel content = FRGUIPaneFactory.createBorderLayout_S_Pane();
content.setPreferredSize(new Dimension(CONTENT_WIDTH, CONTENT_HEIGHT));
content.add(profilePane, BorderLayout.CENTER);
return content;
}
setContentPane(createDialogContentPane(content, createActionButtons(profilePane)));
currentVisibleProfilePane = profilePane;
@Override
protected UIButton[] createRightButtons() {
return createActionButtons(profilePane);
}
@Override
@ -60,10 +71,6 @@ public class TemplateThemeProfileDialog<T extends TemplateTheme> extends Templat
return currentVisibleProfilePane != null;
}
protected int getPaddingVertical(){
return PADDING_VERTICAL;
}
private UIButton[] createActionButtons(final TemplateThemeProfilePane<T> profilePane) {
List<UIButton> uiButtonList = new ArrayList<>();

107
designer-base/src/main/java/com/fr/design/mainframe/theme/dialog/TemplateThemeUsingDialog.java

@ -1,112 +1,13 @@
package com.fr.design.mainframe.theme.dialog;
import com.fr.base.theme.TemplateTheme;
import com.fr.base.theme.TemplateThemeConfig;
import com.fr.base.theme.ThemedTemplate;
import com.fr.design.event.ChangeEvent;
import com.fr.design.event.ChangeListener;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.i18n.Toolkit;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.mainframe.theme.TemplateThemeListPane;
import com.fr.design.mainframe.theme.ui.BorderUtils;
import com.fr.workspace.WorkContext;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.border.CompoundBorder;
import java.awt.BorderLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author Starryi
* @version 1.0
* Created by Starryi on 2021/8/13
*/
public class TemplateThemeUsingDialog<T extends TemplateTheme> extends TemplateThemeDialog {
public static final String COMPLETE_BUTTON = "theme_button_complete";
public static final int CONTENT_WIDTH = TemplateThemeListPane.CONTENT_WIDTH + 42;
public static final int CONTENT_HEIGHT = TemplateThemeListPane.CONTENT_HEIGHT + 23;
private final TemplateThemeListPane<T> themeListPane;
private final ThemedTemplate currentTemplate;
public TemplateThemeUsingDialog(Window parent, ThemedTemplate template, TemplateThemeConfig<T> config) {
super(parent, Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Using_Dialog_Title"), CONTENT_WIDTH, CONTENT_HEIGHT);
this.currentTemplate = template;
this.themeListPane = new TemplateThemeListPane<>(false, config, null);
JPanel content = createContent();
UIButton openThemeManagerButton = createOpenThemeManagerButton();
UIButton completeButton = createCompleteButton();
setContentPane(createDialogContentPane(content,
new UIButton[]{ openThemeManagerButton },
new UIButton[]{ completeButton }
));
themeListPane.startListenThemeConfig();
themeListPane.setSelectedChangeListener(new ChangeListener() {
@Override
public void fireChanged(ChangeEvent event) {
TemplateTheme theme = themeListPane.getSelectedTheme();
if (theme != null) {
currentTemplate.setTemplateTheme(theme);
themeListPane.repaint();
}
}
});
}
private JPanel createContent() {
JPanel container = FRGUIPaneFactory.createBorderLayout_S_Pane();
container.setBorder(BorderFactory.createEmptyBorder(10, 10, 0, 10));
JPanel themeListPaneContainer = FRGUIPaneFactory.createBorderLayout_S_Pane();
themeListPaneContainer.setBorder(new CompoundBorder(
BorderUtils.createTitleBorder(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Using_Dialog_Select"), 12),
BorderFactory.createEmptyBorder(0, 10, 0, 10)
));
themeListPaneContainer.add(themeListPane, BorderLayout.CENTER);
container.add(themeListPaneContainer, BorderLayout.CENTER);
return container;
}
private UIButton createOpenThemeManagerButton() {
if (WorkContext.getCurrent().isRoot()) {
UIButton button = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Manager_Dialog_Title"));
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
TemplateThemeManageDialog dialog = new TemplateThemeManageDialog(TemplateThemeUsingDialog.this);
dialog.setVisible(true);
}
});
return button;
}
return null;
}
private UIButton createCompleteButton() {
UIButton button = new UIButton(Toolkit.i18nText("Fine-Design_Basic_Template_Theme_Using_Dialog_Complete"));
button.setName(COMPLETE_BUTTON);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
exit();
}
});
return button;
}
public void exit() {
themeListPane.stopListenThemeConfig();
themeListPane.stopAsyncFetchTheme();
super.exit();
public class TemplateThemeUsingDialog extends TemplateThemeGridPagesDialog {
public TemplateThemeUsingDialog() {
super();
overallPane.showThemeUsingPane();
}
}

9
designer-base/src/main/java/com/fr/design/mainframe/theme/preview/FormThemePreviewPane.java

@ -14,6 +14,7 @@ import com.fr.design.mainframe.theme.preview.ecpreview.ECComponentPreviewPane;
import com.fr.general.Background;
import com.fr.log.FineLoggerFactory;
import com.fr.plugin.chart.PiePlot4VanChart;
import com.fr.plugin.chart.attr.VanChartLegend;
import com.fr.plugin.chart.attr.axis.VanChartAxis;
import com.fr.plugin.chart.base.AttrLabel;
import com.fr.plugin.chart.base.VanChartTools;
@ -34,7 +35,6 @@ import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import static com.fr.design.i18n.Toolkit.i18nText;
/**
* @author Starryi
* @version 1.0
@ -180,11 +180,14 @@ public class FormThemePreviewPane extends TemplateThemePreviewPane<FormTheme> {
vanChartTools.setFullScreen(false);
PiePlot4VanChart plot = chart.getPlot();
plot.getLegend().setPosition(Constants.BOTTOM);
VanChartLegend legend = (VanChartLegend) plot.getLegend();
legend.setPosition(Constants.BOTTOM);
legend.setCustomSize(true);
legend.setMaxHeight(28);
plot.getGradientStyle().setGradientType(GradientType.NONE);
plot.setInnerRadiusPercent(75);
plot.getRadius().setRadiusType(RadiusType.FIXED);
plot.getRadius().setRadius(80);
plot.getRadius().setRadius(70);
Object[] category = {StringUtils.EMPTY};
Object[] series = {"A1", "B1", "C1", "D1", "E1", "F1", "G1", "H1"};

114
designer-base/src/main/java/com/fr/design/mainframe/theme/ui/BreadcrumbBar.java

@ -0,0 +1,114 @@
package com.fr.design.mainframe.theme.ui;
import com.fr.design.gui.ilable.UILabel;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.plaf.basic.BasicButtonUI;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
* @author Starryi
* @version 1.0
* Created by Starryi on 2021/10/9
*/
public class BreadcrumbBar extends JPanel {
private JButton currentCrumb;
public BreadcrumbBar() {
setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
}
public void addCrumb(final String text, final BreadcrumbBackListener backListener) {
if (currentCrumb != null) {
currentCrumb.setSelected(false);
add(createSeparator());
}
final JButton breadcrumb = createBreadcrumb(text);
breadcrumb.setSelected(true);
add(breadcrumb);
currentCrumb = breadcrumb;
final int index = getComponentCount() - 1;
breadcrumb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
removeTailCrumbs(index + 1);
breadcrumb.setSelected(true);
currentCrumb = breadcrumb;
if (backListener != null) {
backListener.onBreadcrumbBack(text);
}
}
});
}
private void removeTailCrumbs(int from) {
Component[] components = getComponents();
for (int i = from; i < components.length; i++) {
remove(components[i]);
}
revalidate();
repaint();
}
public void clear() {
removeAll();
currentCrumb = null;
}
protected Component createSeparator() {
UILabel separator = new UILabel("/");
separator.setBorder(BorderFactory.createEmptyBorder(0, 8, 0, 8));
separator.setPreferredSize(new Dimension(separator.getPreferredSize().width, 17));
return separator;
}
protected JButton createBreadcrumb(String text) {
JButton button = new BreadcrumbButton(text);
button.setPreferredSize(new Dimension(button.getPreferredSize().width, 17));
return button;
}
public static class BreadcrumbButton extends JButton {
public BreadcrumbButton(String text) {
super(text);
setMargin(new Insets(0, 0, 0, 0));
setBorder(BorderFactory.createEmptyBorder());
setUI(new BasicButtonUI());
setBorderPainted(false);
setOpaque(false);
setBackground(null);
}
@Override
public Insets getMargin() {
Insets insets = super.getMargin();
if (insets != null) {
insets.set(0, 0, 0, 0);
}
return insets;
}
@Override
public void setSelected(boolean b) {
super.setSelected(b);
setForeground(b ? new Color(0x419BF9) : new Color(0x838384));
repaint();
}
}
public interface BreadcrumbBackListener {
void onBreadcrumbBack(String text);
}
}

3
designer-form/src/main/java/com/fr/design/mainframe/JForm.java

@ -248,8 +248,7 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm<F
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
DesignerFrame designerFrame = DesignerContext.getDesignerFrame();
TemplateThemeUsingDialog<FormTheme> dialog = new TemplateThemeUsingDialog<>(designerFrame, JForm.this, FormThemeConfig.getInstance());
TemplateThemeUsingDialog dialog = new TemplateThemeUsingDialog();
dialog.setVisible(true);
}
});

3
designer-form/src/main/java/com/fr/design/mainframe/share/ui/actions/DownloadSuitableThemeAction.java

@ -149,8 +149,7 @@ public class DownloadSuitableThemeAction extends UpdateAction {
return;
}
Window designerFrame = DesignerContext.getDesignerFrame();
TemplateThemeUsingDialog<FormTheme> dialog = new TemplateThemeUsingDialog<>(designerFrame, currentTemplate, FormThemeConfig.getInstance());
TemplateThemeUsingDialog dialog = new TemplateThemeUsingDialog();
dialog.addWindowListener(new UsingDialogAdapter(theme));
dialog.setVisible(true);
}

9
designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/AbstractOnlineWidgetBlock.java

@ -37,8 +37,6 @@ public abstract class AbstractOnlineWidgetBlock extends PreviewWidgetBlock<Onlin
public AbstractOnlineWidgetBlock(OnlineShareWidget widget, OnlineWidgetSelectPane parentPane) {
super(widget);
this.parentPane = parentPane;
JPopupMenu popupMenu = createRightClickPopupMenu();
this.setComponentPopupMenu(popupMenu);
}
protected UILabel initCoverLabel(Image image) {
@ -51,10 +49,12 @@ public abstract class AbstractOnlineWidgetBlock extends PreviewWidgetBlock<Onlin
return widget.getUuid();
}
@Override
protected void showPreview(OnlineShareWidget widget) {
parentPane.showPreviewPane(this, widget.getId());
}
@Override
protected void hidePreview() {
parentPane.hidePreviewPane();
}
@ -66,6 +66,7 @@ public abstract class AbstractOnlineWidgetBlock extends PreviewWidgetBlock<Onlin
return getDefaultDisplayImage();
}
@Override
public Image getPreviewImage() {
try {
return ImageIO.read(new URL(UriUtils.encodePath(widget.getPicPath(), EncodeConstants.ENCODING_UTF_8)));
@ -106,10 +107,12 @@ public abstract class AbstractOnlineWidgetBlock extends PreviewWidgetBlock<Onlin
super.mouseClicked(e);
if (e.getButton() == MouseEvent.BUTTON3) {
this.parentPane.hidePreviewPane();
GUICoreUtils.showPopupMenu(getComponentPopupMenu(), this, e.getX(), e.getY());
JPopupMenu rightClickPopupMenu = getRightClickPopupMenu();
GUICoreUtils.showPopupMenu(rightClickPopupMenu, this, e.getX(), e.getY());
}
}
@Override
public JPopupMenu createRightClickPopupMenu() {
UIPopupMenu popupMenu = new UIPopupMenu();
popupMenu.setOnlyText(true);

23
designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/LocalWidgetBlock.java

@ -24,6 +24,7 @@ import com.fr.design.mainframe.share.util.ShareUIUtils;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.form.share.DefaultSharableWidget;
import com.fr.form.share.SharableWidgetProvider;
import com.fr.form.share.bean.OnlineShareWidget;
import com.fr.form.share.constants.ShareComponentConstants;
import com.fr.form.share.Group;
import com.fr.form.share.record.ShareWidgetInfoManager;
@ -32,12 +33,14 @@ import com.fr.form.ui.Widget;
import com.fr.general.ComparatorUtils;
import com.fr.general.IOUtils;
import com.fr.stable.Constants;
import com.fr.stable.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.Action;
import javax.swing.Icon;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Cursor;
@ -135,12 +138,8 @@ public class LocalWidgetBlock extends PreviewWidgetBlock<DefaultSharableWidget>
super.mouseClicked(e);
if (e.getButton() == MouseEvent.BUTTON3 && !isEdit) {
this.parentPane.hidePreviewPane();
UIPopupMenu popupMenu = new UIPopupMenu();
popupMenu.setOnlyText(true);
popupMenu.setBackground(UIConstants.DEFAULT_BG_RULER);
popupMenu.add(new PopupMenuItem(new MoveGroupAction()));
popupMenu.add(new PopupMenuItem(new RemoveAction()));
GUICoreUtils.showPopupMenu(popupMenu, this, e.getX(), e.getY());
JPopupMenu rightClickPopupMenu = getRightClickPopupMenu();
GUICoreUtils.showPopupMenu(rightClickPopupMenu, this, e.getX(), e.getY());
}
}
@ -271,6 +270,18 @@ public class LocalWidgetBlock extends PreviewWidgetBlock<DefaultSharableWidget>
return !WidgetSelectedManager.getInstance().isSelectEmpty();
}
@Override
public JPopupMenu createRightClickPopupMenu() {
UIPopupMenu popupMenu = new UIPopupMenu();
popupMenu.setOnlyText(true);
popupMenu.setBackground(UIConstants.DEFAULT_BG_RULER);
popupMenu.add(new PopupMenuItem(new MoveGroupAction()));
popupMenu.add(new PopupMenuItem(new RemoveAction()));
return popupMenu;
}
private class MoveGroupAction extends UpdateAction {
public MoveGroupAction() {
this.putValue(Action.SMALL_ICON, null);

43
designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/OnlineWidgetBlock.java

@ -63,10 +63,9 @@ import java.util.concurrent.ExecutionException;
* Created by kerry on 2020-10-19
* 商城组件块
*/
public class OnlineWidgetBlock extends AbstractOnlineWidgetBlock implements PopupMenuListener {
public class OnlineWidgetBlock extends AbstractOnlineWidgetBlock {
private boolean isMouseEnter = false;
private boolean downloading = false;
private boolean popupMenuVisible = false;
private static final Color COVER_COLOR = Color.decode("#333334");
protected MouseEvent lastPressEvent;
private double process = 0D;
@ -96,7 +95,22 @@ public class OnlineWidgetBlock extends AbstractOnlineWidgetBlock implements Popu
@Override
public JPopupMenu createRightClickPopupMenu() {
JPopupMenu popupMenu = super.createRightClickPopupMenu();
popupMenu.addPopupMenuListener(this);
popupMenu.addPopupMenuListener(new PopupMenuListener() {
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
OnlineWidgetBlock.this.repaint();
}
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
OnlineWidgetBlock.this.repaint();
}
@Override
public void popupMenuCanceled(PopupMenuEvent e) {
OnlineWidgetBlock.this.repaint();
}
});
return popupMenu;
}
@ -124,7 +138,7 @@ public class OnlineWidgetBlock extends AbstractOnlineWidgetBlock implements Popu
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
boolean isLeftClickDownloadIcon = e.getButton() != MouseEvent.BUTTON3 && getDownloadIconRec().contains(e.getX(), e.getY());
if (!popupMenuVisible && isLeftClickDownloadIcon && !checkWidgetInstalled()) {
if (!isRightClickPopupMenuVisible() && isLeftClickDownloadIcon && !checkWidgetInstalled()) {
downLoadWidget();
}
}
@ -281,7 +295,7 @@ public class OnlineWidgetBlock extends AbstractOnlineWidgetBlock implements Popu
return;
}
//如果鼠标移动到布局内且布局不可编辑,画出编辑蒙层
if (!popupMenuVisible && (isMouseEnter || downloading)) {
if (!isRightClickPopupMenuVisible() && (isMouseEnter || downloading)) {
Graphics2D g2d = (Graphics2D) g;
Composite oldComposite = g2d.getComposite();
//画白色的编辑层
@ -310,25 +324,6 @@ public class OnlineWidgetBlock extends AbstractOnlineWidgetBlock implements Popu
}
}
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
this.popupMenuVisible = true;
repaint();
}
@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
this.popupMenuVisible = false;
repaint();
}
@Override
public void popupMenuCanceled(PopupMenuEvent e) {
this.popupMenuVisible = false;
repaint();
}
class WidgetDownloadProcess implements com.fr.design.extra.Process<Double> {
@Override

25
designer-form/src/main/java/com/fr/design/mainframe/share/ui/block/PreviewWidgetBlock.java

@ -7,6 +7,7 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
@ -25,12 +26,14 @@ import java.io.Serializable;
public abstract class PreviewWidgetBlock<T> extends JPanel implements MouseListener, MouseMotionListener, Serializable {
protected T widget;
private boolean showing = false;
private final JPopupMenu rightClickPopupMenu;
public PreviewWidgetBlock(T widget) {
this.widget = widget;
initPane();
this.addMouseListener(this);
this.addMouseMotionListener(this);
rightClickPopupMenu = this.createRightClickPopupMenu();
}
protected void initPane() {
@ -51,6 +54,18 @@ public abstract class PreviewWidgetBlock<T> extends JPanel implements MouseListe
return widget;
}
protected JPopupMenu createRightClickPopupMenu() {
return null;
}
protected JPopupMenu getRightClickPopupMenu() {
return rightClickPopupMenu;
}
protected boolean isRightClickPopupMenuVisible() {
return rightClickPopupMenu != null && rightClickPopupMenu.isVisible();
}
@NotNull
protected abstract Image getCoverImage();
@ -116,10 +131,12 @@ public abstract class PreviewWidgetBlock<T> extends JPanel implements MouseListe
public void mouseMoved(MouseEvent e) {
Dimension dimension = getCoverDimension();
Rectangle containerRec = new Rectangle(0, 0, dimension.width, dimension.height);
if (containerRec.contains(e.getX(), e.getY())) {
this.showPreviewPane();
} else {
this.hidePreviewPane();
if (!isRightClickPopupMenuVisible()) {
if (containerRec.contains(e.getX(), e.getY())) {
this.showPreviewPane();
} else {
this.hidePreviewPane();
}
}
}

7
designer-realize/src/main/java/com/fr/design/actions/server/TemplateThemeManagerAction.java

@ -1,8 +1,7 @@
package com.fr.design.actions.server;
import com.fr.design.i18n.Toolkit;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.predefined.ui.ServerPredefinedStylePane;
import com.fr.design.mainframe.theme.TemplateThemeGridPagesPane;
import com.fr.design.mainframe.theme.dialog.TemplateThemeManageDialog;
import com.fr.design.menu.MenuKeySet;
import com.fr.design.menu.SnapChatUpdateAction;
@ -25,12 +24,12 @@ public class TemplateThemeManagerAction extends SnapChatUpdateAction {
this.setName(getMenuKeySet().getMenuKeySetName() + "...");
this.setMnemonic(getMenuKeySet().getMnemonic());
this.setSmallIcon(IOUtils.readIcon("/com/fr/design/icon/icon_predefined_style.png"));
this.generateAndSetSearchText(TemplateThemeManageDialog.TemplateThemeManageDialogContentPane.class.getName());
this.generateAndSetSearchText(TemplateThemeGridPagesPane.class.getName());
}
@Override
protected void actionPerformed0(ActionEvent e) {
TemplateThemeManageDialog dialog = new TemplateThemeManageDialog(DesignerContext.getDesignerFrame());
TemplateThemeManageDialog dialog = new TemplateThemeManageDialog();
dialog.setVisible(true);
}

3
designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java

@ -233,8 +233,7 @@ public class JWorkBook extends JTemplate<WorkBook, WorkBookUndoState> {
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
DesignerFrame designerFrame = DesignerContext.getDesignerFrame();
TemplateThemeUsingDialog<ReportTheme> dialog = new TemplateThemeUsingDialog<>(designerFrame, JWorkBook.this, ReportThemeConfig.getInstance());
TemplateThemeUsingDialog dialog = new TemplateThemeUsingDialog();
dialog.setVisible(true);
}
});

28
designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoLabel.java

@ -6,6 +6,7 @@ package com.fr.design.mainframe.bbs;
import com.fr.design.DesignerEnvManager;
import com.fr.design.bbs.BBSLoginUtils;
import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.FineJOptionPane;
import com.fr.design.extra.LoginContextListener;
import com.fr.design.extra.UserLoginContext;
import com.fr.design.gui.ilable.UILabel;
@ -14,6 +15,7 @@ import com.fr.design.gui.imenu.UIPopupMenu;
import com.fr.design.locale.impl.BbsSpaceMark;
import com.fr.design.login.DesignerLoginHelper;
import com.fr.design.login.DesignerLoginSource;
import com.fr.design.login.service.DesignerPassportManager;
import com.fr.design.login.utils.DesignerLoginUtils;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.os.impl.SupportOSImpl;
@ -29,6 +31,7 @@ import com.fr.general.locale.LocaleMark;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.EncodeConstants;
import com.fr.stable.StringUtils;
import javax.swing.JOptionPane;
import javax.swing.SwingConstants;
import java.awt.Cursor;
import java.awt.Frame;
@ -120,8 +123,33 @@ public class UserInfoLabel extends UILabel {
UserLoginContext.fireLoginContextListener(DesignerLoginSource.SWITCH_ACCOUNT);
}
});
//退出登录
UIMenuItem logout = new UIMenuItem(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_BBSLogin_Logout"));
logout.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
String[] options = new String[]{
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_BBSLogin_Logout"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Button_Cancel")
};
int rv = FineJOptionPane.showConfirmDialog(
DesignerLoginHelper.getDialog(),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_BBSLogin_Logout_Tip"),
com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"),
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.WARNING_MESSAGE,
null,
options,
options[1]
);
if (rv == JOptionPane.YES_OPTION) {
DesignerPassportManager.getInstance().logout();
}
}
});
menu.add(priviteMessage);
menu.add(closeOther);
menu.add(logout);
GUICoreUtils.showPopupMenu(menu, UserInfoLabel.this, 0, MENU_HEIGHT);
} else {
UserLoginContext.fireLoginContextListener(DesignerLoginSource.NORMAL);

6
designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoPane.java

@ -86,6 +86,12 @@ public class UserInfoPane extends BasicPane {
markSignIn(text);
}
});
EventDispatcher.listen(CertificateEvent.LOGOUT, new Listener<String>() {
@Override
public void on(Event event, String text) {
markUnSignIn();
}
});
}
public UserInfoLabel getUserInfoLabel() {

5
designer-realize/src/main/java/com/fr/design/mainframe/guide/creator/theme/ThemeToggleGuide.java

@ -32,7 +32,7 @@ import java.awt.Component;
import java.util.TimerTask;
public class ThemeToggleGuide {
private static TemplateThemeUsingDialog<FormTheme> themeDialog;
private static TemplateThemeUsingDialog themeDialog;
private static String TARGET_XCREATOR_NAME = "chart00";
private static String filePath;
@ -193,8 +193,7 @@ public class ThemeToggleGuide {
private static void showTemplateThemeUsingDialog() {
if (themeDialog == null) {
DesignerFrame designerFrame = DesignerContext.getDesignerFrame();
themeDialog = new TemplateThemeUsingDialog<>(designerFrame, DesignerContext.getDesignerFrame().getSelectedJTemplate(), FormThemeConfig.getInstance());
themeDialog = new TemplateThemeUsingDialog();
}
GuideCreateUtils.showDialogWithoutModal(themeDialog);
}

Loading…
Cancel
Save