Browse Source

Merge pull request #1623 in BA/design from ~PLOUGH/design:feature/9.0 to feature/9.0

* commit '59b23599b543b4de4aa1b38e7b197d5fb63377cf':
  MOBILE-6341 【9.2】FR9.0设计器支持修改决策报表图表块移动端自适应逻辑=>调整代码
  MOBILE-6341 【9.2】FR9.0设计器支持修改决策报表图表块移动端自适应逻辑=>代码规范
  MOBILE-6341 【9.2】FR9.0设计器支持修改决策 报表图表块移动端自适应逻辑=>功能埋点
  MOBILE-6341 【9.2】FR9.0设计器支持修改决策报表图表块移动端自适应逻辑=>配置项可存取
  MOBILE-6341 【9.2】FR9.0设计器支持修改决策报表图表块移动端自适应逻辑=>与body的“手机重布局”选项联动,去勾选时显示提示
  MOBILE-6341 【9.2】FR9.0设计器支持修改 决策报表图表块移动端自适应逻辑=>图表块的移 动端设置界面=>调整代码结构
  MOBILE-6341 【9.2】FR9.0设计器支持修改决策报表图表块移动端自适应逻辑=>图表块的移动端设置界面=>初步框架
superman 7 years ago
parent
commit
f8a47b4efc
  1. 4
      designer_base/src/com/fr/design/locale/designer.properties
  2. 4
      designer_base/src/com/fr/design/locale/designer_en_US.properties
  3. 4
      designer_base/src/com/fr/design/locale/designer_ja_JP.properties
  4. 4
      designer_base/src/com/fr/design/locale/designer_ko_KR.properties
  5. 4
      designer_base/src/com/fr/design/locale/designer_zh_CN.properties
  6. 4
      designer_base/src/com/fr/design/locale/designer_zh_TW.properties
  7. 7
      designer_form/src/com/fr/design/designer/creator/XChartEditor.java
  8. 38
      designer_form/src/com/fr/design/designer/properties/mobile/ChartEditorPropertyUI.java
  9. 4
      designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java
  10. 189
      designer_form/src/com/fr/design/widget/ui/designer/mobile/ChartEditorDefinePane.java

4
designer_base/src/com/fr/design/locale/designer.properties

@ -2179,3 +2179,7 @@ FR-Designer_Adaptive_Property_Auto_Match_Desc=In order to improve the end templa
FR-Designer_Template_Settings=Template Settings FR-Designer_Template_Settings=Template Settings
FR-Designer_Form_Widget_Rename_Failure=There are the same components, please set the other name FR-Designer_Form_Widget_Rename_Failure=There are the same components, please set the other name
FR-Designer_Joption_News=news FR-Designer_Joption_News=news
FR-Designer_Zoom_In_Logic=zoom in logic
FR-Designer_Zoom_Out_Logic=zoom out logic
FR-Designer_Chart_Adaptivity=chart adaptivity
FR-Designer_Tip_Chart_Adaptivity_Unavailable=Hint: since the mobile relayout option is not checked, chart adaptivity settings are not available

4
designer_base/src/com/fr/design/locale/designer_en_US.properties

@ -2178,3 +2178,7 @@ FR-Designer_Adaptive_Property_Auto_Match_Desc=In order to improve the end templa
FR-Designer_Template_Settings=Template Settings FR-Designer_Template_Settings=Template Settings
FR-Designer_Form_Widget_Rename_Failure=There are the same components, please set the other name FR-Designer_Form_Widget_Rename_Failure=There are the same components, please set the other name
FR-Designer_Joption_News=news FR-Designer_Joption_News=news
FR-Designer_Zoom_In_Logic=zoom in logic
FR-Designer_Zoom_Out_Logic=zoom out logic
FR-Designer_Chart_Adaptivity=chart adaptivity
FR-Designer_Tip_Chart_Adaptivity_Unavailable=Hint: since the mobile relayout option is not checked, chart adaptivity settings are not available

4
designer_base/src/com/fr/design/locale/designer_ja_JP.properties

@ -2176,3 +2176,7 @@ FR-Designer_Adaptive_Property_Auto_Match_Desc=
FR-Designer_Template_Settings= FR-Designer_Template_Settings=
FR-Designer_Form_Widget_Rename_Failure=\u5B58\u5728\u30EA\u30CD\u30FC\u30E0\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u3001\u4ED6\u306E\u540D\u79F0\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002 FR-Designer_Form_Widget_Rename_Failure=\u5B58\u5728\u30EA\u30CD\u30FC\u30E0\u3059\u308B\u30E2\u30B8\u30E5\u30FC\u30EB\u306F\u3001\u4ED6\u306E\u540D\u79F0\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
FR-Designer_Joption_News=\u30CB\u30E5\u30FC\u30B9 FR-Designer_Joption_News=\u30CB\u30E5\u30FC\u30B9
FR-Designer_Zoom_In_Logic=
FR-Designer_Zoom_Out_Logic=
FR-Designer_Chart_Adaptivity=
FR-Designer_Tip_Chart_Adaptivity_Unavailable=

4
designer_base/src/com/fr/design/locale/designer_ko_KR.properties

@ -2177,3 +2177,7 @@ FR-Designer_Adaptive_Property_Auto_Match_Desc=
FR-Designer_Template_Settings= FR-Designer_Template_Settings=
FR-Designer_Form_Widget_Rename_Failure=\uC874\uC7AC \uB3D9\uBA85 \uAD6C\uC131 \uC694\uC18C \uC124\uC815 \uC880 \uB2E4\uB978 \uC774\uB984 FR-Designer_Form_Widget_Rename_Failure=\uC874\uC7AC \uB3D9\uBA85 \uAD6C\uC131 \uC694\uC18C \uC124\uC815 \uC880 \uB2E4\uB978 \uC774\uB984
FR-Designer_Joption_News=\uC18C\uC2DD FR-Designer_Joption_News=\uC18C\uC2DD
FR-Designer_Zoom_In_Logic=
FR-Designer_Zoom_Out_Logic=
FR-Designer_Chart_Adaptivity=
FR-Designer_Tip_Chart_Adaptivity_Unavailable=

4
designer_base/src/com/fr/design/locale/designer_zh_CN.properties

@ -2179,3 +2179,7 @@ FR-Designer_Adaptive_Property_Auto_Match_Desc=\u4E3A\u63D0\u5347\u624B\u673A\u7A
FR-Designer_Template_Settings=\u6A21\u7248\u8BBE\u7F6E FR-Designer_Template_Settings=\u6A21\u7248\u8BBE\u7F6E
FR-Designer_Form_Widget_Rename_Failure=\u5B58\u5728\u91CD\u540D\u7EC4\u4EF6\uFF0C\u8BF7\u8BBE\u7F6E\u5176\u4ED6\u540D\u79F0 FR-Designer_Form_Widget_Rename_Failure=\u5B58\u5728\u91CD\u540D\u7EC4\u4EF6\uFF0C\u8BF7\u8BBE\u7F6E\u5176\u4ED6\u540D\u79F0
FR-Designer_Joption_News=\u6D88\u606F FR-Designer_Joption_News=\u6D88\u606F
FR-Designer_Zoom_In_Logic=\u653E\u5927\u903B\u8F91
FR-Designer_Zoom_Out_Logic=\u7F29\u5C0F\u903B\u8F91
FR-Designer_Chart_Adaptivity=\u56FE\u8868\u81EA\u9002\u5E94
FR-Designer_Tip_Chart_Adaptivity_Unavailable=\u63D0\u793A\uFF1Abody\u672A\u52FE\u9009\u624B\u673A\u91CD\u5E03\u5C40\u72B6\u6001\u4E0B\uFF0C\u4E0D\u652F\u6301\u56FE\u8868\u81EA\u9002\u5E94

4
designer_base/src/com/fr/design/locale/designer_zh_TW.properties

@ -2178,3 +2178,7 @@ FR-Designer_Adaptive_Property_Auto_Match_Desc=\u70BA\u63D0\u5347\u624B\u6A5F\u7A
FR-Designer_Template_Settings=\u6A21\u7248\u8A2D\u5B9A FR-Designer_Template_Settings=\u6A21\u7248\u8A2D\u5B9A
FR-Designer_Form_Widget_Rename_Failure=\u5B58\u5728\u91CD\u540D\u7D44\u4EF6\uFF0C\u8ACB\u8A2D\u5B9A\u5176\u4ED6\u540D\u7A31 FR-Designer_Form_Widget_Rename_Failure=\u5B58\u5728\u91CD\u540D\u7D44\u4EF6\uFF0C\u8ACB\u8A2D\u5B9A\u5176\u4ED6\u540D\u7A31
FR-Designer_Joption_News=\u6D88\u606F FR-Designer_Joption_News=\u6D88\u606F
FR-Designer_Zoom_In_Logic=\u653E\u5927\u908F\u8F2F
FR-Designer_Zoom_Out_Logic=\u7E2E\u5C0F\u908F\u8F2F
FR-Designer_Chart_Adaptivity=\u5716\u8868\u81EA\u6211\u8ABF\u6574
FR-Designer_Tip_Chart_Adaptivity_Unavailable=\u63D0\u793A\uFF1Abody\u672A\u52FE\u9078\u624B\u6A5F\u91CD\u4F48\u5C40\u72C0\u614B\u4E0B\uFF0C\u4E0D\u652F\u6301\u5716\u8868\u81EA\u6211\u8ABF\u6574

7
designer_form/src/com/fr/design/designer/creator/XChartEditor.java

@ -10,6 +10,9 @@ import com.fr.base.chart.BaseChartCollection;
import com.fr.design.designer.beans.AdapterBus; import com.fr.design.designer.beans.AdapterBus;
import com.fr.design.designer.beans.ComponentAdapter; import com.fr.design.designer.beans.ComponentAdapter;
import com.fr.design.designer.beans.models.SelectionModel; import com.fr.design.designer.beans.models.SelectionModel;
import com.fr.design.designer.properties.mobile.ChartEditorPropertyUI;
import com.fr.design.designer.properties.mobile.ElementCasePropertyUI;
import com.fr.design.fun.WidgetPropertyUIProvider;
import com.fr.design.gui.chart.BaseChartPropertyPane; import com.fr.design.gui.chart.BaseChartPropertyPane;
import com.fr.design.gui.chart.MiddleChartComponent; import com.fr.design.gui.chart.MiddleChartComponent;
import com.fr.design.mainframe.*; import com.fr.design.mainframe.*;
@ -278,4 +281,8 @@ public class XChartEditor extends XBorderStyleWidgetCreator {
initStyle(); initStyle();
} }
@Override
public WidgetPropertyUIProvider[] getWidgetPropertyUIProviders() {
return new WidgetPropertyUIProvider[]{ new ChartEditorPropertyUI(this)};
}
} }

38
designer_form/src/com/fr/design/designer/properties/mobile/ChartEditorPropertyUI.java

@ -0,0 +1,38 @@
package com.fr.design.designer.properties.mobile;
import com.fr.design.designer.creator.XChartEditor;
import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XElementCase;
import com.fr.design.dialog.BasicPane;
import com.fr.design.fun.impl.AbstractWidgetPropertyUIProvider;
import com.fr.design.gui.itable.AbstractPropertyTable;
import com.fr.design.widget.ui.designer.mobile.ChartEditorDefinePane;
import com.fr.design.widget.ui.designer.mobile.ElementCaseDefinePane;
import com.fr.general.Inter;
/**
* Created by plough on 2018/1/18.
*/
public class ChartEditorPropertyUI extends AbstractWidgetPropertyUIProvider {
private XCreator xCreator;
public ChartEditorPropertyUI(XChartEditor xChartEditor) {
this.xCreator = xChartEditor;
}
@Override
public AbstractPropertyTable createWidgetAttrTable() {
return null;
}
@Override
public BasicPane createWidgetAttrPane() {
return new ChartEditorDefinePane(xCreator);
}
@Override
public String tableTitle() {
return Inter.getLocText("FR-Designer_Mobile-Attr");
}
}

4
designer_form/src/com/fr/design/mainframe/WidgetPropertyPane.java

@ -35,6 +35,8 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetPrope
private static final String PARA = "para"; private static final String PARA = "para";
private static final String BODY = "body"; private static final String BODY = "body";
private static final int PADDING = 10;
private static final int PADDING_M = 12;
private FormWidgetCardPane formWidgetCardPane; // 控件的属性表 private FormWidgetCardPane formWidgetCardPane; // 控件的属性表
private EventPropertyTable eventTable; // 控件的事件表 private EventPropertyTable eventTable; // 控件的事件表
private List<AbstractPropertyTable> widgetPropertyTables; // 这个变量应该是保存控件拓展的属性tab private List<AbstractPropertyTable> widgetPropertyTables; // 这个变量应该是保存控件拓展的属性tab
@ -122,6 +124,7 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetPrope
if (mobileExtraPropertyPanes != null) { if (mobileExtraPropertyPanes != null) {
for (MobileWidgetDefinePane extraPane : mobileExtraPropertyPanes) { for (MobileWidgetDefinePane extraPane : mobileExtraPropertyPanes) {
extraPane.initPropertyGroups(designer); extraPane.initPropertyGroups(designer);
extraPane.populate(designer);
} }
} }
if (widgetPropertyTables != null) { if (widgetPropertyTables != null) {
@ -224,6 +227,7 @@ public class WidgetPropertyPane extends FormDockView implements BaseWidgetPrope
for (WidgetPropertyUIProvider widgetAttrProvider : widgetAttrProviders) { for (WidgetPropertyUIProvider widgetAttrProvider : widgetAttrProviders) {
MobileWidgetDefinePane extraPane = (MobileWidgetDefinePane) widgetAttrProvider.createWidgetAttrPane(); MobileWidgetDefinePane extraPane = (MobileWidgetDefinePane) widgetAttrProvider.createWidgetAttrPane();
if (extraPane != null) { if (extraPane != null) {
extraPane.setBorder(BorderFactory.createEmptyBorder(PADDING, PADDING, PADDING, PADDING_M));
mobileExtraPropertyPanes.add(extraPane); mobileExtraPropertyPanes.add(extraPane);
wsp.add(extraPane); wsp.add(extraPane);
} }

189
designer_form/src/com/fr/design/widget/ui/designer/mobile/ChartEditorDefinePane.java

@ -0,0 +1,189 @@
package com.fr.design.widget.ui.designer.mobile;
import com.fr.base.mobile.ChartMobileAttrProvider;
import com.fr.base.mobile.ChartMobileFitAttrState;
import com.fr.base.mobile.ChartMobileFitAttrStateProvider;
import com.fr.design.constants.LayoutConstants;
import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.properties.items.Item;
import com.fr.design.foldablepane.UIExpandablePane;
import com.fr.design.gui.frpane.AttributeChangeListener;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.FormDesigner;
import com.fr.design.mainframe.WidgetPropertyPane;
import com.fr.form.FormFunctionProcessor;
import com.fr.form.ui.BaseChartEditor;
import com.fr.form.ui.container.WFitLayout;
import com.fr.general.Inter;
import com.fr.plugin.ExtraClassManager;
import com.fr.stable.StringUtils;
import com.fr.stable.fun.FunctionProcessor;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
/**
* Created by plough on 2018/1/18.
*/
public class ChartEditorDefinePane extends MobileWidgetDefinePane{
private static final Item[] ITEMS = {
new Item(ChartMobileFitAttrState.AUTO.description(), ChartMobileFitAttrState.AUTO),
new Item(ChartMobileFitAttrState.AREA.description(), ChartMobileFitAttrState.AREA),
new Item(ChartMobileFitAttrState.PROPORTION.description(), ChartMobileFitAttrState.PROPORTION)
};
private XCreator xCreator; // 当前选中控件的xCreator
private FormDesigner designer; // 当前设计器
private UIComboBox zoomOutComboBox;// 缩小逻辑下拉框
private AttributeChangeListener changeListener;
private UILabel tipLabel;
public ChartEditorDefinePane (XCreator xCreator) {
this.xCreator = xCreator;
}
@Override
protected void initContentPane() {}
@Override
protected JPanel createContentPane() {
return new JPanel();
}
@Override
public String getIconPath() {
return StringUtils.EMPTY;
}
@Override
public String title4PopupWindow() {
return StringUtils.EMPTY;
}
@Override
public void initPropertyGroups(Object source) {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.designer = WidgetPropertyPane.getInstance().getEditingFormDesigner();
this.add(isAppRelayout() ? getMobileSettingsPane() : getUnavailableTipPane(), BorderLayout.NORTH);
this.repaint();
}
// body是否开启手机重布局
private boolean isAppRelayout() {
return ((WFitLayout)designer.getRootComponent().toData()).isAppRelayout();
}
private JPanel getUnavailableTipPane() {
JPanel panel = new JPanel(new BorderLayout());
UILabel unavailableTipLabel = new UILabel();
unavailableTipLabel.setText("<html>" + Inter.getLocText("FR-Designer_Tip_Chart_Adaptivity_Unavailable") + "<html>");
unavailableTipLabel.setForeground(Color.gray);
panel.add(unavailableTipLabel, BorderLayout.NORTH);
return panel;
}
private UIExpandablePane getMobileSettingsPane() {
initZoomOutComboBox();
tipLabel = new UILabel();
tipLabel.setForeground(Color.gray);
updateTipLabel();
Component[][] components = new Component[][]{
new Component[] {new UILabel(Inter.getLocText("FR-Designer_Zoom_In_Logic"), SwingConstants.LEFT), new UILabel(ChartMobileFitAttrState.PROPORTION.description())},
new Component[] {new UILabel(Inter.getLocText("FR-Designer_Zoom_Out_Logic"), SwingConstants.LEFT), zoomOutComboBox},
new Component[] {tipLabel, null}
};
double f = TableLayout.FILL;
double p = TableLayout.PREFERRED;
double[] rowSize = {p, p, p};
double[] columnSize = {p,f};
int[][] rowCount = {{1, 1}, {1, 1}, {1, 1}};
final JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, rowCount, 30, LayoutConstants.VGAP_LARGE);
panel.setBorder(BorderFactory.createEmptyBorder(10, 0, 0, 0));
final JPanel panelWrapper = FRGUIPaneFactory.createBorderLayout_S_Pane();
panelWrapper.add(panel, BorderLayout.NORTH);
return new UIExpandablePane(Inter.getLocText("FR-Designer_Chart_Adaptivity"), 280, 20, panelWrapper);
}
private void initZoomOutComboBox() {
this.zoomOutComboBox = new UIComboBox(ITEMS);
}
private void updateTipLabel() {
ChartMobileFitAttrState fitAttrState = (ChartMobileFitAttrState) ((Item)zoomOutComboBox.getSelectedItem()).getValue();
// 使用 html,可以自动换行
tipLabel.setText("<html>" + fitAttrState.tip() + "</html>");
}
private void bindListeners2Widgets() {
reInitAllListeners();
this.changeListener = new AttributeChangeListener() {
@Override
public void attributeChange() {
update();
}
};
}
/**
* 后台初始化所有事件.
*/
private void reInitAllListeners() {
initListener(this);
}
@Override
public void populate(FormDesigner designer) {
this.designer = designer;
if (!isAppRelayout()) {
return;
}
BaseChartEditor chartEditor = (BaseChartEditor)xCreator.toData();
ChartMobileFitAttrStateProvider zoomOutAttr = chartEditor.getMobileAttr().getZoomOutAttr();
this.zoomOutComboBox.setSelectedItem(new Item(zoomOutAttr.description(), zoomOutAttr));
// 数据 populate 完成后,再设置监听
this.bindListeners2Widgets();
this.zoomOutComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// 只响应选中事件
if (e.getStateChange() != ItemEvent.SELECTED) {
return;
}
updateTipLabel();
ChartMobileFitAttrState selectedAttr = (ChartMobileFitAttrState)((Item)e.getItem()).getValue();
if (selectedAttr.getState() != ChartMobileFitAttrState.AUTO.getState()) {
// 功能埋点
FunctionProcessor processor = ExtraClassManager.getInstance().getFunctionProcessor();
if (processor != null) {
processor.recordFunction(FormFunctionProcessor.MOBILE_CHART_ADAPTIVITY);
}
}
}
});
this.addAttributeChangeListener(changeListener);
}
@Override
public void update() {
ChartMobileAttrProvider mobileAttr = ((BaseChartEditor)xCreator.toData()).getMobileAttr();
mobileAttr.setZoomInAttr(ChartMobileFitAttrState.PROPORTION);
mobileAttr.setZoomOutAttr((ChartMobileFitAttrState)((Item)zoomOutComboBox.getSelectedItem()).getValue());
DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); // 触发设计器保存按钮亮起来
}
}
Loading…
Cancel
Save