Browse Source

MOBILE-6341 【9.2】FR9.0设计器支持修改决策报表图表块移动端自适应逻辑=>配置项可存取

plough 7 years ago
parent
commit
f96f509f4a
  1. 76
      designer_chart/src/com/fr/design/chart/mobile/ChartMobileAttr.java
  2. 77
      designer_form/src/com/fr/design/widget/ui/designer/mobile/ChartEditorDefinePane.java

76
designer_chart/src/com/fr/design/chart/mobile/ChartMobileAttr.java

@ -1,76 +0,0 @@
package com.fr.design.chart.mobile;
import com.fr.base.mobile.ChartMobileAttrProvider;
import com.fr.base.mobile.ChartMobileFitAttrState;
import com.fr.base.mobile.ChartMobileFitAttrStateProvider;
import com.fr.json.JSONException;
import com.fr.json.JSONObject;
import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLableReader;
/**
* 当前图表块在移动端的一些属性
* Created by plough on 2018/1/23.
*/
public class ChartMobileAttr implements ChartMobileAttrProvider {
public static final String XML_TAG = "ChartMobileAttr";
// 缩小逻辑属性
private ChartMobileFitAttrState zoomOutAttr;
// 放大逻辑属性
private ChartMobileFitAttrState zoomInAttr;
@Override
public ChartMobileFitAttrStateProvider getZoomOutAttr() {
return zoomOutAttr;
}
@Override
public void setZoomOutAttr(ChartMobileFitAttrStateProvider zoomOutAttr) {
this.zoomOutAttr = (ChartMobileFitAttrState) zoomOutAttr;
}
@Override
public ChartMobileFitAttrStateProvider getZoomInAttr() {
return zoomInAttr;
}
@Override
public void setZoomInAttr(ChartMobileFitAttrStateProvider zoomInAttr) {
this.zoomInAttr = (ChartMobileFitAttrState) zoomInAttr;
}
@Override
public boolean isAdaptive() {
// TODO: body 是否开启手机重布局。需要解决模块间依赖问题。这个方法暂时没用,等功能做好之后,再考虑是否去掉
return true;
}
@Override
public void createJSONConfig(JSONObject jo) throws JSONException {
jo.put("zoomOutFit", this.zoomOutAttr.getState());
jo.put("zoomInFit", this.zoomInAttr.getState());
}
@Override
public void readXML(XMLableReader reader) {
int defaultIndex = ChartMobileFitAttrState.AUTO.getState();
int zoomOutIndex = reader.getAttrAsInt("zoomOut", defaultIndex);
int zoomInIndex = reader.getAttrAsInt("zoomIn", defaultIndex);
this.zoomOutAttr = ChartMobileFitAttrState.parse(zoomOutIndex);
this.zoomInAttr = ChartMobileFitAttrState.parse(zoomInIndex);
}
@Override
public void writeXML(XMLPrintWriter writer) {
writer.startTAG(ChartMobileAttrProvider.XML_TAG)
.attr("zoomOut", this.zoomOutAttr.getState())
.attr("zoomIn", this.zoomInAttr.getState())
.end();
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}

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

@ -1,6 +1,7 @@
package com.fr.design.widget.ui.designer.mobile;
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;
@ -8,13 +9,13 @@ 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.gui.ispinner.UISpinner;
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.ui.ChartEditor;
import com.fr.form.ui.BaseChartEditor;
import com.fr.form.ui.container.WFitLayout;
import com.fr.general.Inter;
@ -38,6 +39,7 @@ public class ChartEditorDefinePane extends MobileWidgetDefinePane{
private UIComboBox zoomOutComboBox;// 缩小逻辑下拉框
private AttributeChangeListener changeListener;
private UILabel tipLabel;
private boolean isPopulating = false;
public ChartEditorDefinePane (XCreator xCreator) {
this.xCreator = xCreator;
@ -70,7 +72,7 @@ public class ChartEditorDefinePane extends MobileWidgetDefinePane{
if (((WFitLayout)designer.getRootComponent().toData()).isAppRelayout()) { // 如果开启了手机重布局
this.add(getMobileSettingsPane(), BorderLayout.NORTH);
this.bingListeners2Widgets();
this.setGlobalNames();
this.addAttributeChangeListener(changeListener);
} else {
this.add(getUnavailableTipPane(), BorderLayout.NORTH);
}
@ -88,13 +90,7 @@ public class ChartEditorDefinePane extends MobileWidgetDefinePane{
}
private UIExpandablePane getMobileSettingsPane() {
this.zoomOutComboBox = new UIComboBox(ITEMS);
this.zoomOutComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
updateTipLabel();
}
});
initZoomOutComboBox();
tipLabel = new UILabel();
tipLabel.setForeground(Color.gray);
@ -115,9 +111,26 @@ public class ChartEditorDefinePane extends MobileWidgetDefinePane{
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);
BaseChartEditor chartEditor = (BaseChartEditor)xCreator.toData();
ChartMobileFitAttrStateProvider zoomOutAttr = chartEditor.getMobileAttr().getZoomOutAttr();
this.zoomOutComboBox.setSelectedItem(new Item(zoomOutAttr.description(), zoomOutAttr));
this.zoomOutComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
updateTipLabel();
}
});
}
private void updateTipLabel() {
ChartMobileFitAttrState fitAttrState = (ChartMobileFitAttrState) ((Item)zoomOutComboBox.getSelectedItem()).getValue();
// 使用 html,可以自动换行
@ -129,6 +142,9 @@ public class ChartEditorDefinePane extends MobileWidgetDefinePane{
this.changeListener = new AttributeChangeListener() {
@Override
public void attributeChange() {
if (isPopulating) {
return;
}
update();
}
};
@ -143,46 +159,13 @@ public class ChartEditorDefinePane extends MobileWidgetDefinePane{
@Override
public void populate(FormDesigner designer) {
// this.designer = designer;
// this.addAttributeChangeListener(changeListener);
// ChartEditor chartEditor = (ChartEditor)xCreator.toData();
// this.zoomOutComboBox.setSelectedIndex(0);
// this.hComboBox.setSelectedItem(new Item (elementCaseEditor.getHorziontalAttr().description(), elementCaseEditor.getHorziontalAttr()));
// this.vComboBox.setSelectedItem(new Item (elementCaseEditor.getVerticalAttr().description(), elementCaseEditor.getVerticalAttr()));
// this.heightRestrictCheckBox.setSelected(elementCaseEditor.isHeightRestrict());
// this.maxHeightLabel.setVisible();
// this.maxHeightSpinner.setVisible(elementCaseEditor.isHeightRestrict());
// this.maxHeightSpinner.setValue(elementCaseEditor.getHeightPercent());
// 感觉 populate 方法没啥用。可以直接在 initPropertyGroups 中更新界面
}
@Override
public void update() {
// DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); // 触发设计器保存按钮亮起来
// String globalName = this.getGlobalName();
// switch (globalName) {
// case "hComboBox":
//// ((ChartEditor)xCreator.toData()).setHorziontalAttr(((MobileFitAttrState)((Item)hComboBox.getSelectedItem()).getValue()));
// break;
// case "vComboBox":
//// ((ChartEditor)xCreator.toData()).setVerticalAttr(((MobileFitAttrState)((Item)vComboBox.getSelectedItem()).getValue()));
// break;
// case "heightRestrictCheckBox":
// boolean isHeightRestrict = heightRestrictCheckBox.isSelected();
//// ((ChartEditor)xCreator.toData()).setHeightRestrict(isHeightRestrict);
// maxHeightSpinner.setVisible(isHeightRestrict);
// maxHeightLabel.setVisible(isHeightRestrict);
// break;
// case "maxHeightSpinner":
//// ((ChartEditor)xCreator.toData()).setHeightPercent(maxHeightSpinner.getValue());
// break;
// }
((BaseChartEditor)xCreator.toData()).getMobileAttr().setZoomInAttr(ChartMobileFitAttrState.PROPORTION);
((BaseChartEditor)xCreator.toData()).getMobileAttr().setZoomOutAttr((ChartMobileFitAttrState)((Item)zoomOutComboBox.getSelectedItem()).getValue());
DesignerContext.getDesignerFrame().getSelectedJTemplate().fireTargetModified(); // 触发设计器保存按钮亮起来
}
private void setGlobalNames() {
// this.hComboBox.setGlobalName("hComboBox");
// this.vComboBox.setGlobalName("vComboBox");
// this.heightRestrictCheckBox.setGlobalName("heightRestrictCheckBox");
// this.maxHeightSpinner.setGlobalName("maxHeightSpinner");
}
}

Loading…
Cancel
Save