diff --git a/designer-base/src/main/java/com/fr/design/gui/style/FollowingThemePane.java b/designer-base/src/main/java/com/fr/design/gui/style/FollowingThemePane.java index c7c1da0efd..55f4612a2b 100644 --- a/designer-base/src/main/java/com/fr/design/gui/style/FollowingThemePane.java +++ b/designer-base/src/main/java/com/fr/design/gui/style/FollowingThemePane.java @@ -114,10 +114,7 @@ public class FollowingThemePane extends BasicPane implements UIObserver { public TemplateTheme getUsingTheme() { JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); if (template != null) { - TemplateTheme theme = template.getTemplateTheme(); - if (theme instanceof FormTheme) { - return theme; - } + return template.getTemplateTheme(); } return null; } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java index d014199f35..e00bc445c0 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/theme/TemplateThemeBlock.java @@ -211,6 +211,11 @@ public class TemplateThemeBlock extends JPanel { public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; + Color oldColor = g2d.getColor(); + g2d.setColor(Color.WHITE); + g2d.fillRect(0, 0, getWidth(), getHeight()); + g2d.setColor(oldColor); + paintCenterImage(g2d, thumbnail != null ? thumbnail : LOADING_IMAGE); } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/StylePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/StylePane.java index 59bc73d575..93bf523970 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/StylePane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/StylePane.java @@ -4,6 +4,8 @@ import com.fr.base.NameStyle; import com.fr.base.Style; import com.fr.design.designer.IntervalConstants; import com.fr.design.dialog.BasicPane; +import com.fr.design.event.UIObserver; +import com.fr.design.event.UIObserverListener; import com.fr.design.gui.ibutton.UIButtonGroup; import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.ilable.UILabel; @@ -24,8 +26,10 @@ import java.awt.Component; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; -public class StylePane extends BasicPane { +public class StylePane extends BasicPane implements UIObserver { public static final String[] FOLLOWING_THEME_STRING_ARRAYS = new String[]{ Toolkit.i18nText("Fine-Design_Style_Follow_Theme"), Toolkit.i18nText("Fine-Design_Style_Not_Follow_Theme"), @@ -40,6 +44,8 @@ public class StylePane extends BasicPane { private JPanel contentPane; + private final List observerListeners = new ArrayList<>(); + public StylePane() { followingThemeButtonGroup = new UIButtonGroup<>(FOLLOWING_THEME_STRING_ARRAYS); customStylePane = new CustomStylePane(); @@ -67,7 +73,7 @@ public class StylePane extends BasicPane { int selectedIndex = followingThemeButtonGroup.getSelectedIndex(); cardLayout.show(contentPane, FOLLOWING_THEME_STRING_ARRAYS[selectedIndex]); if (selectedIndex == 1) { - // 对于同一个单元格,跟随主题切换到自定义,若跟随主题面板有选中项,则自定义中的配置与其保持一致,否则自定义中配置保持不变 + // 对于同一个单元格,跟随主题切换到自定义,自定义中的配置与其保持一致 NameStyle lastSelectedNameStyle = themedCellStyleListPane.updateBean(); if (lastSelectedNameStyle != null) { Style lastSelectedRealStyle = lastSelectedNameStyle.getRealStyle(); @@ -81,10 +87,11 @@ public class StylePane extends BasicPane { } } } else { - // 对于同一个单元格,自定义切换到跟随主题,跟随主题应当清除选中项,即没有选中任何主题中的单元格样式, - // 因为还未选中,所以自定义中的配置保持不变,此时若用户切换会自定义,配置应当与之前一样 - themedCellStyleListPane.populateBean(null); + // 对于同一个单元格,自定义切换到跟随主题,跟随主题选中"默认"样式,并使用默认样式设置选中的单元格 + themedCellStyleListPane.reset(); } + + fireStateChanged(); } }); @@ -205,4 +212,19 @@ public class StylePane extends BasicPane { } } + private void fireStateChanged() { + for (UIObserverListener listener: observerListeners) { + listener.doChange(); + } + } + + @Override + public void registerChangeListener(UIObserverListener listener) { + observerListeners.add(listener); + } + + @Override + public boolean shouldResponseChangeListener() { + return true; + } } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/ThemedCellStyleListPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/ThemedCellStyleListPane.java index 59a61e2d10..65da02e989 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/ThemedCellStyleListPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/ThemedCellStyleListPane.java @@ -77,14 +77,15 @@ public class ThemedCellStyleListPane extends FurtherBasicBeanPane imp * 重置 */ public void reset() { - + refreshBeanElement(); + styleList.setSelectedIndex(0); } @Override public void populateBean(NameStyle ob) { refreshBeanElement(); if (ob == null) { - styleList.setSelectedIndex(-1); + styleList.setSelectedIndex(0); return; } for (int i = 0; i < defaultListModel.getSize(); i++) { diff --git a/designer-realize/src/main/java/com/fr/design/report/ReportStylePane.java b/designer-realize/src/main/java/com/fr/design/report/ReportStylePane.java index e65e25949e..caf919b294 100644 --- a/designer-realize/src/main/java/com/fr/design/report/ReportStylePane.java +++ b/designer-realize/src/main/java/com/fr/design/report/ReportStylePane.java @@ -135,7 +135,7 @@ public class ReportStylePane extends BasicPane { int selectedIndex = followingThemeButtonGroup.getSelectedIndex(); cardLayout.show(contentPane, FOLLOWING_THEME_STRING_ARRAYS[selectedIndex]); if (selectedIndex == 1) { - // 对于同一个单元格,跟随主题切换到自定义,若跟随主题面板有选中项,则自定义中的配置与其保持一致,否则自定义中配置保持不变 + // 对于同一个单元格,跟随主题切换到自定义,自定义中的配置与其保持一致 NameStyle lastSelectedNameStyle = themedCellStyleListPane.updateBean(); if (lastSelectedNameStyle != null) { Style lastSelectedRealStyle = lastSelectedNameStyle.getRealStyle(); @@ -149,9 +149,8 @@ public class ReportStylePane extends BasicPane { } } } else { - // 对于同一个单元格,自定义切换到跟随主题,跟随主题应当清除选中项,即没有选中任何主题中的单元格样式, - // 因为还未选中,所以自定义中的配置保持不变,此时若用户切换会自定义,配置应当与之前一样 - themedCellStyleListPane.populateBean(null); + // 对于同一个单元格,自定义切换到跟随主题,跟随主题选中"默认"样式,并使用默认样式设置选中的单元格 + themedCellStyleListPane.reset(); } } }); @@ -421,7 +420,7 @@ public class ReportStylePane extends BasicPane { } } - stateChanged(evt); + CustomFloatStyleSettingPane.this.stateChanged(evt); } });