Browse Source

REPORT-58367 【回归测试】聚合报表全选报表块内容,修改跟随主题,配置不生效

【问题原因】
交互优化变动:
单元格样式从自定义切换到跟随主题时,自动选中主题的默认样式,
且使用改样式设置单元格

【改动思路】
同上
fix-lag
Starryi 3 years ago
parent
commit
a681411288
  1. 32
      designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/StylePane.java
  2. 5
      designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/ThemedCellStyleListPane.java
  3. 7
      designer-realize/src/main/java/com/fr/design/report/ReportStylePane.java

32
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.base.Style;
import com.fr.design.designer.IntervalConstants; import com.fr.design.designer.IntervalConstants;
import com.fr.design.dialog.BasicPane; 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.ibutton.UIButtonGroup;
import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
@ -24,8 +26,10 @@ import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; 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[]{ public static final String[] FOLLOWING_THEME_STRING_ARRAYS = new String[]{
Toolkit.i18nText("Fine-Design_Style_Follow_Theme"), Toolkit.i18nText("Fine-Design_Style_Follow_Theme"),
Toolkit.i18nText("Fine-Design_Style_Not_Follow_Theme"), Toolkit.i18nText("Fine-Design_Style_Not_Follow_Theme"),
@ -40,6 +44,8 @@ public class StylePane extends BasicPane {
private JPanel contentPane; private JPanel contentPane;
private final List<UIObserverListener> observerListeners = new ArrayList<>();
public StylePane() { public StylePane() {
followingThemeButtonGroup = new UIButtonGroup<>(FOLLOWING_THEME_STRING_ARRAYS); followingThemeButtonGroup = new UIButtonGroup<>(FOLLOWING_THEME_STRING_ARRAYS);
customStylePane = new CustomStylePane(); customStylePane = new CustomStylePane();
@ -67,7 +73,7 @@ public class StylePane extends BasicPane {
int selectedIndex = followingThemeButtonGroup.getSelectedIndex(); int selectedIndex = followingThemeButtonGroup.getSelectedIndex();
cardLayout.show(contentPane, FOLLOWING_THEME_STRING_ARRAYS[selectedIndex]); cardLayout.show(contentPane, FOLLOWING_THEME_STRING_ARRAYS[selectedIndex]);
if (selectedIndex == 1) { if (selectedIndex == 1) {
// 对于同一个单元格,跟随主题切换到自定义,若跟随主题面板有选中项,则自定义中的配置与其保持一致,否则自定义中配置保持不变 // 对于同一个单元格,跟随主题切换到自定义,自定义中的配置与其保持一致
NameStyle lastSelectedNameStyle = themedCellStyleListPane.updateBean(); NameStyle lastSelectedNameStyle = themedCellStyleListPane.updateBean();
if (lastSelectedNameStyle != null) { if (lastSelectedNameStyle != null) {
Style lastSelectedRealStyle = lastSelectedNameStyle.getRealStyle(); Style lastSelectedRealStyle = lastSelectedNameStyle.getRealStyle();
@ -81,10 +87,11 @@ public class StylePane extends BasicPane {
} }
} }
} else { } else {
// 对于同一个单元格,自定义切换到跟随主题,跟随主题应当清除选中项,即没有选中任何主题中的单元格样式, // 对于同一个单元格,自定义切换到跟随主题,跟随主题选中"默认"样式,并使用默认样式设置选中的单元格
// 因为还未选中,所以自定义中的配置保持不变,此时若用户切换会自定义,配置应当与之前一样 themedCellStyleListPane.reset();
themedCellStyleListPane.populateBean(null);
} }
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;
}
} }

5
designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/ThemedCellStyleListPane.java

@ -77,14 +77,15 @@ public class ThemedCellStyleListPane extends FurtherBasicBeanPane<NameStyle> imp
* 重置 * 重置
*/ */
public void reset() { public void reset() {
refreshBeanElement();
styleList.setSelectedIndex(0);
} }
@Override @Override
public void populateBean(NameStyle ob) { public void populateBean(NameStyle ob) {
refreshBeanElement(); refreshBeanElement();
if (ob == null) { if (ob == null) {
styleList.setSelectedIndex(-1); styleList.setSelectedIndex(0);
return; return;
} }
for (int i = 0; i < defaultListModel.getSize(); i++) { for (int i = 0; i < defaultListModel.getSize(); i++) {

7
designer-realize/src/main/java/com/fr/design/report/ReportStylePane.java

@ -135,7 +135,7 @@ public class ReportStylePane extends BasicPane {
int selectedIndex = followingThemeButtonGroup.getSelectedIndex(); int selectedIndex = followingThemeButtonGroup.getSelectedIndex();
cardLayout.show(contentPane, FOLLOWING_THEME_STRING_ARRAYS[selectedIndex]); cardLayout.show(contentPane, FOLLOWING_THEME_STRING_ARRAYS[selectedIndex]);
if (selectedIndex == 1) { if (selectedIndex == 1) {
// 对于同一个单元格,跟随主题切换到自定义,若跟随主题面板有选中项,则自定义中的配置与其保持一致,否则自定义中配置保持不变 // 对于同一个单元格,跟随主题切换到自定义,自定义中的配置与其保持一致
NameStyle lastSelectedNameStyle = themedCellStyleListPane.updateBean(); NameStyle lastSelectedNameStyle = themedCellStyleListPane.updateBean();
if (lastSelectedNameStyle != null) { if (lastSelectedNameStyle != null) {
Style lastSelectedRealStyle = lastSelectedNameStyle.getRealStyle(); Style lastSelectedRealStyle = lastSelectedNameStyle.getRealStyle();
@ -149,9 +149,8 @@ public class ReportStylePane extends BasicPane {
} }
} }
} else { } else {
// 对于同一个单元格,自定义切换到跟随主题,跟随主题应当清除选中项,即没有选中任何主题中的单元格样式, // 对于同一个单元格,自定义切换到跟随主题,跟随主题选中"默认"样式,并使用默认样式设置选中的单元格
// 因为还未选中,所以自定义中的配置保持不变,此时若用户切换会自定义,配置应当与之前一样 themedCellStyleListPane.reset();
themedCellStyleListPane.populateBean(null);
} }
} }
}); });

Loading…
Cancel
Save