diff --git a/designer_chart/src/com/fr/design/chart/mobile/ChartMobileAttr.java b/designer_chart/src/com/fr/design/chart/mobile/ChartMobileAttr.java deleted file mode 100644 index 34aeb393af..0000000000 --- a/designer_chart/src/com/fr/design/chart/mobile/ChartMobileAttr.java +++ /dev/null @@ -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(); - } -} diff --git a/designer_form/src/com/fr/design/widget/ui/designer/mobile/ChartEditorDefinePane.java b/designer_form/src/com/fr/design/widget/ui/designer/mobile/ChartEditorDefinePane.java index 8730deec02..232d0bc1b7 100644 --- a/designer_form/src/com/fr/design/widget/ui/designer/mobile/ChartEditorDefinePane.java +++ b/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"); - } - }