diff --git a/designer-base/src/main/java/com/fr/design/actions/core/ActionFactory.java b/designer-base/src/main/java/com/fr/design/actions/core/ActionFactory.java index 574195470..f19c962f8 100644 --- a/designer-base/src/main/java/com/fr/design/actions/core/ActionFactory.java +++ b/designer-base/src/main/java/com/fr/design/actions/core/ActionFactory.java @@ -13,12 +13,14 @@ import javax.swing.KeyStroke; import java.awt.event.KeyEvent; import java.lang.reflect.Constructor; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; -import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.CopyOnWriteArraySet; /** * 插入单元格元素和插入悬浮元素的一些集合方法 @@ -27,8 +29,8 @@ import java.util.concurrent.ConcurrentMap; * @version 2017年11月17日14点39分 */ public class ActionFactory { - private static LinkedHashSet> actionClasses = new LinkedHashSet<>(); - private static LinkedHashSet> floatActionClasses = new LinkedHashSet<>(); + private static Set> actionClasses = new CopyOnWriteArraySet<>(); + private static Set> floatActionClasses = new CopyOnWriteArraySet<>(); private static Class chartCollectionClass = null; /** * 无需每次实例化的悬浮元素编辑器 @@ -256,14 +258,14 @@ public class ActionFactory { */ public static void registerCellInsertActionClass(Class[] cls) { if (cls != null) { - Collections.addAll(actionClasses, cls); + actionClasses.addAll(Arrays.asList(cls)); } } public static void referCellInsertActionClass(Class[] cls) { if (cls != null) { actionClasses.clear(); - Collections.addAll(actionClasses, cls); + actionClasses.addAll(Arrays.asList(cls)); } } @@ -321,14 +323,14 @@ public class ActionFactory { */ public static void registerFloatInsertActionClass(Class[] cls) { if (cls != null) { - Collections.addAll(floatActionClasses, cls); + floatActionClasses.addAll(Arrays.asList(cls)); } } public static void referFloatInsertActionClass(Class[] cls) { if (cls != null) { floatActionClasses.clear(); - Collections.addAll(floatActionClasses, cls); + floatActionClasses.addAll(Arrays.asList(cls)); } } diff --git a/designer-base/src/main/java/com/fr/design/actions/file/WebPreviewUtils.java b/designer-base/src/main/java/com/fr/design/actions/file/WebPreviewUtils.java index 8d1e5828d..9f87943e1 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/WebPreviewUtils.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/WebPreviewUtils.java @@ -86,6 +86,8 @@ public final class WebPreviewUtils { if (!jt.saveAsTemplate()) { return; } + } else { + return; } currentTemplate = jt.getEditingFILE(); } diff --git a/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberField.java b/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberField.java index f4437a9c4..62d24c56a 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberField.java +++ b/designer-base/src/main/java/com/fr/design/gui/itextfield/UINumberField.java @@ -5,11 +5,15 @@ import com.fr.general.ComparatorUtils; import com.fr.stable.CoreConstants; import com.fr.stable.StringUtils; +import javax.swing.event.CaretEvent; +import javax.swing.event.CaretListener; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; import java.awt.Dimension; import java.awt.Toolkit; +import java.awt.event.InputMethodEvent; +import java.awt.event.InputMethodListener; /** * Number Field. @@ -35,6 +39,11 @@ public class UINumberField extends UITextField { private boolean isContentChanged = false; private boolean fillNegativeNumber = true; + /** + * 输入法输入完成一个字符输入过程的标记。开始输入的时候是true,输入完矫正光标后为false + */ + private boolean isInputMethodOnceInserting = false; + private int insertOffset = 0; public UINumberField() { this(MAX_INTEGERLENGTH_32, MAX_DECIMALLENGTH); @@ -55,6 +64,7 @@ public class UINumberField extends UITextField { this.minValue = minValue; this.maxValue = maxValue; setFieldDocument(); + initFieldListener(); } public void setFieldDocument() { @@ -62,6 +72,31 @@ public class UINumberField extends UITextField { initListener(); } + private void initFieldListener() { + addInputMethodListener(new InputMethodListener() { + @Override + public void inputMethodTextChanged(InputMethodEvent event) { + isInputMethodOnceInserting = true; + } + + @Override + public void caretPositionChanged(InputMethodEvent event) { + } + }); + + addCaretListener(new CaretListener() { + @Override + public void caretUpdate(CaretEvent e) { + if (isInputMethodOnceInserting) { + isInputMethodOnceInserting = false; + setCaretPosition(insertOffset); + } else { + insertOffset = e.getDot(); + } + } + }); + } + public void canFillNegativeNumber(boolean fillNegativeNumber) { this.fillNegativeNumber = fillNegativeNumber; } @@ -186,6 +221,13 @@ public class UINumberField extends UITextField { super.insertString(offset, s, a); } + public void remove(int offs, int len) throws BadLocationException { + if (isInputMethodOnceInserting) { + return; + } + super.remove(offs, len); + } + // kunsnat: 这种限制输入 有个不好的地方, 比如删除时: 10.1 最大值限定100, 那么就删除中间的小数点之后变为101, 超出了100. // 但是直接限制不能删除中间类似小数点, 那么也可能遇到: 最小值10 , 从100变化到其中的19, 就很难.. private boolean notChange(String strNew) { diff --git a/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java b/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java index 0dcfe4c21..9f948e7a1 100644 --- a/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/style/BorderPane.java @@ -217,18 +217,36 @@ public class BorderPane extends AbstractBasicStylePane implements GlobalNameObse int lineStyle = currentLineCombo.getSelectedLineStyle(); Color lineColor = currentLineColorPane.getSelectObject(); CellBorderStyle cellBorderStyle = new CellBorderStyle(); - cellBorderStyle.setTopColor(lineColor); + if (topToggleButton.isSelected()) { + cellBorderStyle.setTopColor(lineColor); + } cellBorderStyle.setTopStyle(topToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); - cellBorderStyle.setBottomColor(lineColor); + + if (bottomToggleButton.isSelected()) { + cellBorderStyle.setBottomColor(lineColor); + } cellBorderStyle.setBottomStyle(bottomToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); - cellBorderStyle.setLeftColor(lineColor); + + if (leftToggleButton.isSelected()) { + cellBorderStyle.setLeftColor(lineColor); + } cellBorderStyle.setLeftStyle(leftToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); - cellBorderStyle.setRightColor(lineColor); + + if (rightToggleButton.isSelected()) { + cellBorderStyle.setRightColor(lineColor); + } cellBorderStyle.setRightStyle(rightToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); - cellBorderStyle.setVerticalColor(lineColor); + + if (verticalToggleButton.isSelected()) { + cellBorderStyle.setVerticalColor(lineColor); + } cellBorderStyle.setVerticalStyle(verticalToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); - cellBorderStyle.setHorizontalColor(lineColor); + + if (horizontalToggleButton.isSelected()) { + cellBorderStyle.setHorizontalColor(lineColor); + } cellBorderStyle.setHorizontalStyle(horizontalToggleButton.isSelected() ? lineStyle : Constants.LINE_NONE); + if (leftToggleButton.isSelected() && bottomToggleButton.isSelected() && rightToggleButton.isSelected() && topToggleButton.isSelected()) { outerToggleButton.setSelected(true); } else { diff --git a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java index 39ef20658..fb8f9a2da 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/DesignerFrameFileDealerPane.java @@ -598,7 +598,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt }); // 重名提示 warnLabel = new UILabel(); - warnLabel.setPreferredSize(new Dimension(300, 30)); + warnLabel.setPreferredSize(new Dimension(300, 50)); warnLabel.setHorizontalAlignment(SwingConstants.LEFT); warnLabel.setVerticalAlignment(SwingConstants.TOP); warnLabel.setForeground(Color.RED); @@ -641,7 +641,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt new Component[]{midPanel}, new Component[]{buttonsPane} }, - new double[]{TableLayout.FILL, TableLayout.FILL, TableLayout.PREFERRED}, + new double[]{TableLayout.FILL, TableLayout.PREFERRED, TableLayout.PREFERRED}, new double[]{TableLayout.FILL} ), BorderLayout.CENTER); @@ -803,7 +803,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt }); // 重名提示 warnLabel = new UILabel(); - warnLabel.setPreferredSize(new Dimension(300, 30)); + warnLabel.setPreferredSize(new Dimension(300, 50)); warnLabel.setHorizontalAlignment(SwingConstants.LEFT); warnLabel.setVerticalAlignment(SwingConstants.TOP); warnLabel.setForeground(Color.RED); @@ -848,7 +848,7 @@ public class DesignerFrameFileDealerPane extends JPanel implements FileToolbarSt new Component[]{midPanel}, new Component[]{bottomPanel} }, - new double[]{TableLayout.FILL, TableLayout.FILL, TableLayout.PREFERRED}, + new double[]{TableLayout.FILL, TableLayout.PREFERRED, TableLayout.PREFERRED}, new double[]{TableLayout.FILL} ), BorderLayout.CENTER); diff --git a/designer-base/src/main/resources/com/fr/design/images/control/edit_disable.svg b/designer-base/src/main/resources/com/fr/design/images/control/edit_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/control/edit_disable.svg rename to designer-base/src/main/resources/com/fr/design/images/control/edit_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/control/remove_disable.svg b/designer-base/src/main/resources/com/fr/design/images/control/remove_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/control/remove_disable.svg rename to designer-base/src/main/resources/com/fr/design/images/control/remove_disabled.svg diff --git a/designer-base/src/main/resources/com/fr/design/images/m_file/preview_disable.svg b/designer-base/src/main/resources/com/fr/design/images/m_file/preview_disabled.svg similarity index 100% rename from designer-base/src/main/resources/com/fr/design/images/m_file/preview_disable.svg rename to designer-base/src/main/resources/com/fr/design/images/m_file/preview_disabled.svg diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/GisLayerPane.java b/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/GisLayerPane.java index 406b89610..e94c79818 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/GisLayerPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/map/designer/type/GisLayerPane.java @@ -221,12 +221,9 @@ public class GisLayerPane extends JPanel implements UIObserver { /* mapPlot.getGisLayer().setGisLayerType(GISLayerType.AUTO); mapPlot.getGisLayer().setLayerName(GISLayerType.getLocString(GISLayerType.AUTO));*/ - GaoDeGisType gaoDeGisType= mapPlot.getDefaultGisLayerType(); - - mapPlot.getGisLayer().setGisLayerType(GISLayerType.GAO_DE_API); - mapPlot.getGisLayer().setLayerName(gaoDeGisType.getTypeName()); - mapPlot.getGisLayer().setGaoDeGisType(gaoDeGisType); - populate(mapPlot.getGisLayer()); + GisLayer defaultGisLayer = mapPlot.getDefaultGisLayer(); + mapPlot.setGisLayer(defaultGisLayer); + populate(defaultGisLayer); } public void populate(GisLayer layer) { diff --git a/designer-chart/src/main/resources/com/fr/design/editor/script/editor.js b/designer-chart/src/main/resources/com/fr/design/editor/script/editor.js index 3786e47ef..ec4de690d 100644 --- a/designer-chart/src/main/resources/com/fr/design/editor/script/editor.js +++ b/designer-chart/src/main/resources/com/fr/design/editor/script/editor.js @@ -74,10 +74,10 @@ }], layouts: [{ type: "bi.left", - rgap: 5 + rgap: 2 }], value: this.model.mode, - width: 125 + width: 170 }, this._getToolBar()], height: 24 }, { diff --git a/designer-chart/src/main/resources/com/fr/design/editor/script/editor.model.js b/designer-chart/src/main/resources/com/fr/design/editor/script/editor.model.js index e1ee49645..06f7bf2bf 100644 --- a/designer-chart/src/main/resources/com/fr/design/editor/script/editor.model.js +++ b/designer-chart/src/main/resources/com/fr/design/editor/script/editor.model.js @@ -18,7 +18,7 @@ return [{ type: "bi.single_select_radio_item", text: BI.i18nText("BI-Basic_Auto"), - width: 50, + width: 70, logic: { dynamic: true }, @@ -27,7 +27,7 @@ }, { type: "bi.single_select_radio_item", text: BI.i18nText("BI-Basic_Custom"), - width: 60, + width: 80, logic: { dynamic: true }, diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellStylePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellStylePane.java index 370677860..4bfd9fa46 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellStylePane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/CellStylePane.java @@ -3,6 +3,7 @@ package com.fr.design.mainframe.cell.settingpane; import com.fr.base.Style; import com.fr.design.constants.UIConstants; import com.fr.design.mainframe.cell.settingpane.style.StylePane; +import com.fr.design.style.BorderUtils; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.report.cell.DefaultTemplateCellElement; @@ -67,6 +68,7 @@ public class CellStylePane extends AbstractCellAttrPane { @Override public void updateBeans() { + Object[] selectionCellBorderObjects = BorderUtils.createCellBorderObject(elementCasePane); if (stylePane.getSelectedIndex() == 1) { Style s = stylePane.updateBean(); TemplateElementCase elementCase = elementCasePane.getEditingElementCase(); @@ -110,7 +112,8 @@ public class CellStylePane extends AbstractCellAttrPane { } } } - stylePane.updateBorder();// border必须特别处理 + // border必须特别处理 + stylePane.updateBorder(selectionCellBorderObjects); } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/CustomStylePane.java b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/CustomStylePane.java index 2d7277239..268dbebe6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/CustomStylePane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/cell/settingpane/style/CustomStylePane.java @@ -136,8 +136,8 @@ public class CustomStylePane extends MultiTabPane