Browse Source

Merge branch 'release/10.0' of http://cloud.finedevelop.com:2015/scm/~mata.li/designrel into release/10.0

final/10.0
Mata.Li 6 years ago
parent
commit
dd578e0265
  1. 3
      designer-base/src/main/java/com/fr/design/actions/file/WebPreviewUtils.java
  2. 16
      designer-base/src/main/java/com/fr/design/editor/ValueEditorPane.java
  3. 10
      designer-base/src/main/java/com/fr/design/fun/PreviewProvider.java
  4. 7
      designer-base/src/main/java/com/fr/design/fun/impl/AbstractPreviewProvider.java
  5. 8
      designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java
  6. 33
      designer-base/src/main/java/com/fr/design/preview/FormPreview.java
  7. 47
      designer-base/src/main/java/com/fr/design/preview/MobilePreview.java
  8. 45
      designer-base/src/main/java/com/fr/design/style/color/ColorSelectConfigManager.java
  9. BIN
      designer-base/src/main/resources/com/fr/design/images/buttonicon/mobile.png
  10. BIN
      designer-base/src/main/resources/com/fr/design/images/buttonicon/mobileb24.png
  11. 40
      designer-form/src/main/java/com/fr/design/mainframe/JForm.java
  12. 7
      designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java

3
designer-base/src/main/java/com/fr/design/actions/file/WebPreviewUtils.java

@ -9,7 +9,6 @@ import com.fr.design.utils.DesignUtils;
import com.fr.file.FILE; import com.fr.file.FILE;
import com.fr.file.FileNodeFILE; import com.fr.file.FileNodeFILE;
import com.fr.general.GeneralUtils; import com.fr.general.GeneralUtils;
import com.fr.general.web.ParameterConstants;
import com.fr.stable.project.ProjectConstants; import com.fr.stable.project.ProjectConstants;
import com.fr.stable.web.AbstractWebletCreator; import com.fr.stable.web.AbstractWebletCreator;
@ -27,7 +26,7 @@ public final class WebPreviewUtils {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static void preview(JTemplate<?, ?> jt, PreviewProvider provider) { public static void preview(JTemplate<?, ?> jt, PreviewProvider provider) {
String baseRoute = jt.route(); String baseRoute = jt.route();
actionPerformed(jt, baseRoute, provider == null ? Collections.EMPTY_MAP : provider.parametersForPreview(), ParameterConstants.VIEWLET); actionPerformed(jt, baseRoute, provider == null ? Collections.EMPTY_MAP : provider.parametersForPreview(), provider.getActionType());
} }
private static void actionPerformed(JTemplate<?, ?> jt, String baseRoute, Map<String, Object> map, String actionType) { private static void actionPerformed(JTemplate<?, ?> jt, String baseRoute, Map<String, Object> map, String actionType) {

16
designer-base/src/main/java/com/fr/design/editor/ValueEditorPane.java

@ -344,8 +344,24 @@ public class ValueEditorPane extends BasicPane implements UIObserver, GlobalName
* *
* @param listener 观察者监听事件 * @param listener 观察者监听事件
*/ */
@Override
public void registerNameListener(GlobalNameListener listener) { public void registerNameListener(GlobalNameListener listener) {
globalNameListener = listener; globalNameListener = listener;
for (Editor card : cards) {
doLoop(card, listener);
}
}
private void doLoop(Container card, GlobalNameListener listener) {
for (int i = 0, len = card.getComponentCount(); i < len; i++) {
Component tmpComp = card.getComponent(i);
if (tmpComp instanceof Container) {
doLoop((Container) tmpComp, listener);
}
if (tmpComp instanceof GlobalNameObserver) {
((GlobalNameObserver) tmpComp).registerNameListener(listener);
}
}
} }
/** /**

10
designer-base/src/main/java/com/fr/design/fun/PreviewProvider.java

@ -11,7 +11,7 @@ import java.util.Map;
* @since 8.0 * @since 8.0
* 自定义预览方式接口 * 自定义预览方式接口
*/ */
public interface PreviewProvider extends Mutable{ public interface PreviewProvider extends Mutable {
String MARK_STRING = "PreviewProvider"; String MARK_STRING = "PreviewProvider";
@ -54,4 +54,12 @@ public interface PreviewProvider extends Mutable{
*/ */
Map<String, Object> parametersForPreview(); Map<String, Object> parametersForPreview();
/**
* 该种预览方式下对模板的处理方式
* 分页填报等需要计算输出模板移动端预览直接输出url
* @return 处理方式
*/
String getActionType();
} }

7
designer-base/src/main/java/com/fr/design/fun/impl/AbstractPreviewProvider.java

@ -3,6 +3,7 @@ package com.fr.design.fun.impl;
import com.fr.design.fun.PreviewProvider; import com.fr.design.fun.PreviewProvider;
import com.fr.design.mainframe.JTemplate; import com.fr.design.mainframe.JTemplate;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.web.ParameterConstants;
import com.fr.stable.fun.impl.AbstractProvider; import com.fr.stable.fun.impl.AbstractProvider;
import com.fr.stable.fun.mark.API; import com.fr.stable.fun.mark.API;
@ -45,4 +46,10 @@ public abstract class AbstractPreviewProvider extends AbstractProvider implement
public int hashCode() { public int hashCode() {
return nameForPopupItem().hashCode(); return nameForPopupItem().hashCode();
} }
@Override
public String getActionType() {
return ParameterConstants.VIEWLET;
}
} }

8
designer-base/src/main/java/com/fr/design/mainframe/JTemplate.java

@ -1,5 +1,6 @@
package com.fr.design.mainframe; package com.fr.design.mainframe;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext; import com.fr.base.FRContext;
import com.fr.base.Parameter; import com.fr.base.Parameter;
import com.fr.base.ScreenResolution; import com.fr.base.ScreenResolution;
@ -15,6 +16,7 @@ import com.fr.design.actions.edit.RedoAction;
import com.fr.design.actions.edit.UndoAction; import com.fr.design.actions.edit.UndoAction;
import com.fr.design.actions.file.SaveAsTemplateAction; import com.fr.design.actions.file.SaveAsTemplateAction;
import com.fr.design.actions.file.SaveTemplateAction; import com.fr.design.actions.file.SaveTemplateAction;
import com.fr.design.actions.file.WebPreviewUtils;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.designer.TargetComponent; import com.fr.design.designer.TargetComponent;
import com.fr.design.dialog.InformationWarnPane; import com.fr.design.dialog.InformationWarnPane;
@ -1006,7 +1008,9 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
* @return * @return
*/ */
public Icon getPreviewLargeIcon() { public Icon getPreviewLargeIcon() {
return UIConstants.RUN_BIG_ICON; PreviewProvider provider = getPreviewType();
String iconPath = provider.iconPathForLarge();
return BaseUtils.readIcon(iconPath);
} }
/** /**
@ -1099,6 +1103,8 @@ public abstract class JTemplate<T extends BaseBook, U extends BaseUndoState<?>>
* @param provider 预览模式 * @param provider 预览模式
*/ */
public void previewMenuActionPerformed(PreviewProvider provider) { public void previewMenuActionPerformed(PreviewProvider provider) {
setPreviewType(provider);
WebPreviewUtils.preview(this, provider);
} }

33
designer-base/src/main/java/com/fr/design/preview/FormPreview.java

@ -0,0 +1,33 @@
package com.fr.design.preview;
import com.fr.design.fun.impl.AbstractPreviewProvider;
/**
* @author kerry
* @date 2018/5/22
*/
public class FormPreview extends AbstractPreviewProvider {
private static final int PREVIEW_TYPE = 5;
@Override
public String nameForPopupItem() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Form_Preview");
}
@Override
public String iconPathForPopupItem() {
return "com/fr/design/images/buttonicon/runs.png";
}
@Override
public String iconPathForLarge() {
return "com/fr/design/images/buttonicon/run24.png";
}
@Override
public int previewTypeCode() {
return PREVIEW_TYPE;
}
}

47
designer-base/src/main/java/com/fr/design/preview/MobilePreview.java

@ -0,0 +1,47 @@
package com.fr.design.preview;
import com.fr.design.fun.impl.AbstractPreviewProvider;
import java.util.HashMap;
import java.util.Map;
/**
* @author kerry
* @date 2018/5/11
*/
public class MobilePreview extends AbstractPreviewProvider {
private static final int PREVIEW_TYPE = 4;
private static final String ACTION_TYPE = "path";
@Override
public String nameForPopupItem() {
return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Mobile_Preview");
}
@Override
public String iconPathForPopupItem() {
return "com/fr/design/images/buttonicon/mobile.png";
}
@Override
public String iconPathForLarge() {
return "com/fr/design/images/buttonicon/mobileb24.png";
}
@Override
public int previewTypeCode() {
return PREVIEW_TYPE;
}
@Override
public String getActionType() {
return ACTION_TYPE;
}
@Override
public Map<String, Object> parametersForPreview() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("op", "mobile");
return map;
}
}

45
designer-base/src/main/java/com/fr/design/style/color/ColorSelectConfigManager.java

@ -5,8 +5,7 @@ import com.fr.stable.xml.XMLPrintWriter;
import com.fr.stable.xml.XMLReadable; import com.fr.stable.xml.XMLReadable;
import com.fr.stable.xml.XMLableReader; import com.fr.stable.xml.XMLableReader;
import java.awt.*; import java.awt.Color;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -17,10 +16,9 @@ import java.util.List;
*/ */
public class ColorSelectConfigManager implements XMLReadable { public class ColorSelectConfigManager implements XMLReadable {
// 最近使用的颜色个数 // 最大存储的最近使用的颜色个数
private int colorNums = 20; private int colorNum = 20;
private boolean init = true;
// 最近使用颜色 // 最近使用颜色
private List<Color> colors = new ArrayList<Color>(); private List<Color> colors = new ArrayList<Color>();
private static final String RECENT_COLOR_TAG = "RecentColors"; private static final String RECENT_COLOR_TAG = "RecentColors";
@ -33,35 +31,30 @@ public class ColorSelectConfigManager implements XMLReadable {
} }
public int getColorNum() { public int getColorNum() {
return colorNums; return colorNum;
} }
public void setColorNum(int colorNums) { public void setColorNum(int colorNum) {
this.colorNums = colorNums; this.colorNum = colorNum;
} }
/** /**
* 添加颜色到最近使用队列中 * 添加颜色到最近使用队列中
* *
* @param color 颜色 * @param color 颜色
*/ */
public void addToColorQueue(Color color) { public void addToColorQueue(Color color) {
if(color == null){
// 将透明度不为 0% 的 颜色去掉
if (color == null || color.getAlpha() != 0xff) {
return; return;
} }
// 过滤重复的最近使用颜色 // 过滤重复的最近使用颜色
// 因为有个后进先出的问题,最近使用的颜色需要放到最前面所以没用set // 最近使用的颜色需要放到"最前面","最前面"是在面板部分做的,是 colors 的逆序,因此保证最新的放在 list 的最后,
if (colors.contains(color)) {
colors.remove(color); colors.remove(color);
}
colors.add(color); colors.add(color);
/*@author yaohwu*/
//将历史颜色信息保存到xml文件中去
if (colors != null && !colors.isEmpty()) {
this.setColorsToFile(colors);
}
} }
public void readXML(XMLableReader reader) { public void readXML(XMLableReader reader) {
@ -71,8 +64,11 @@ public class ColorSelectConfigManager implements XMLReadable {
String tagName = reader.getTagName(); String tagName = reader.getTagName();
if (reader.isChildNode()) { if (reader.isChildNode()) {
if (ComparatorUtils.equals(COLOR_TAG, tagName)) { if (ComparatorUtils.equals(COLOR_TAG, tagName)) {
Color color = null; Color color = reader.getAttrAsColor("colors", null);
colors.add(reader.getAttrAsColor("colors", color)); // 将透明度不为 0% 的 颜色去掉
if (color != null && color.getAlpha() == 0xff) {
colors.add(color);
}
} }
} }
} }
@ -82,11 +78,18 @@ public class ColorSelectConfigManager implements XMLReadable {
public void writeXML(XMLPrintWriter writer) { public void writeXML(XMLPrintWriter writer) {
writer.startTAG(RECENT_COLOR_TAG); writer.startTAG(RECENT_COLOR_TAG);
if (this.colors != null && !this.colors.isEmpty()) { if (this.colors != null && !this.colors.isEmpty()) {
for (int i = 0; i < this.colors.size(); i++) { // 只应该存储 max 个,其他颜色存了也没用
// 从 colors 的尾部开始计算,从尾往头数 max 个,但是存储的时候还是要从头往尾
int size = colors.size();
int beginIndex = size > colorNum ? size - colorNum : 0;
for (int i = beginIndex; i < this.colors.size(); i++) {
writer.startTAG(COLOR_TAG); writer.startTAG(COLOR_TAG);
writer.attr("colors", colors.get(i).getRGB()); writer.attr("colors", colors.get(i).getRGB());
writer.end(); writer.end();
} }
} }
writer.end(); writer.end();
} }

BIN
designer-base/src/main/resources/com/fr/design/images/buttonicon/mobile.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

BIN
designer-base/src/main/resources/com/fr/design/images/buttonicon/mobileb24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

40
designer-form/src/main/java/com/fr/design/mainframe/JForm.java

@ -25,6 +25,7 @@ import com.fr.design.designer.creator.XWParameterLayout;
import com.fr.design.designer.properties.FormWidgetAuthorityEditPane; import com.fr.design.designer.properties.FormWidgetAuthorityEditPane;
import com.fr.design.event.TargetModifiedEvent; import com.fr.design.event.TargetModifiedEvent;
import com.fr.design.event.TargetModifiedListener; import com.fr.design.event.TargetModifiedListener;
import com.fr.design.fun.PreviewProvider;
import com.fr.design.gui.frpane.HyperlinkGroupPane; import com.fr.design.gui.frpane.HyperlinkGroupPane;
import com.fr.design.gui.frpane.HyperlinkGroupPaneActionProvider; import com.fr.design.gui.frpane.HyperlinkGroupPaneActionProvider;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
@ -46,6 +47,8 @@ import com.fr.design.menu.MenuDef;
import com.fr.design.menu.ShortCut; import com.fr.design.menu.ShortCut;
import com.fr.design.menu.ToolBarDef; import com.fr.design.menu.ToolBarDef;
import com.fr.design.parameter.ParameterPropertyPane; import com.fr.design.parameter.ParameterPropertyPane;
import com.fr.design.preview.FormPreview;
import com.fr.design.preview.MobilePreview;
import com.fr.design.roleAuthority.RolesAlreadyEditedPane; import com.fr.design.roleAuthority.RolesAlreadyEditedPane;
import com.fr.design.utils.gui.LayoutUtils; import com.fr.design.utils.gui.LayoutUtils;
import com.fr.file.FILE; import com.fr.file.FILE;
@ -80,7 +83,9 @@ import java.awt.Font;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm { public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
private static final String FORM_CARD = "FORM"; private static final String FORM_CARD = "FORM";
@ -683,7 +688,7 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
* *
*/ */
public Icon getPreviewLargeIcon() { public Icon getPreviewLargeIcon() {
return UIConstants.RUN_BIG_ICON; return super.getPreviewLargeIcon();
} }
@Override @Override
@ -698,14 +703,19 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
* @return 菜单 * @return 菜单
*/ */
public UIMenuItem[] createMenuItem4Preview() { public UIMenuItem[] createMenuItem4Preview() {
UIMenuItem form = new UIMenuItem(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Form_M_Form_Preview"), UIConstants.RUN_SMALL_ICON); List<UIMenuItem> menuItems = new ArrayList<UIMenuItem>();
form.addActionListener(new ActionListener() { PreviewProvider[] previewProviders = supportPreview();
for (final PreviewProvider provider : previewProviders) {
UIMenuItem item = new UIMenuItem(provider.nameForPopupItem(), BaseUtils.readIcon(provider.iconPathForPopupItem()));
item.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
WebPreviewUtils.preview(JForm.this); provider.onClick(JForm.this);
} }
}); });
return new UIMenuItem[]{form}; menuItems.add(item);
}
return menuItems.toArray(new UIMenuItem[menuItems.size()]);
} }
/** /**
@ -922,6 +932,26 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
return creator.toData(); return creator.toData();
} }
/**
* 支持的预览模式
* @return 预览模式
*/
@Override
public PreviewProvider[] supportPreview() {
return new PreviewProvider[]{new FormPreview(), new MobilePreview()};
}
/**
* 预览按钮点击事件
*
* @param provider 预览接口
*/
@Override
public void previewMenuActionPerformed(PreviewProvider provider) {
super.previewMenuActionPerformed(provider);
}
@Override @Override
public String route() { public String route() {
return ViewRequestConstants.FORM_VIEW_PATH; return ViewRequestConstants.FORM_VIEW_PATH;

7
designer-realize/src/main/java/com/fr/design/mainframe/JWorkBook.java

@ -10,7 +10,6 @@ import com.fr.design.DesignModelAdapter;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.actions.AllowAuthorityEditAction; import com.fr.design.actions.AllowAuthorityEditAction;
import com.fr.design.actions.ExitAuthorityEditAction; import com.fr.design.actions.ExitAuthorityEditAction;
import com.fr.design.actions.file.WebPreviewUtils;
import com.fr.design.actions.file.export.CSVExportAction; import com.fr.design.actions.file.export.CSVExportAction;
import com.fr.design.actions.file.export.EmbeddedExportExportAction; import com.fr.design.actions.file.export.EmbeddedExportExportAction;
import com.fr.design.actions.file.export.ExcelExportAction; import com.fr.design.actions.file.export.ExcelExportAction;
@ -53,6 +52,7 @@ import com.fr.design.menu.ToolBarDef;
import com.fr.design.module.DesignModuleFactory; import com.fr.design.module.DesignModuleFactory;
import com.fr.design.parameter.ParameterDefinitePane; import com.fr.design.parameter.ParameterDefinitePane;
import com.fr.design.parameter.ParameterInputPane; import com.fr.design.parameter.ParameterInputPane;
import com.fr.design.preview.MobilePreview;
import com.fr.design.preview.PagePreview; import com.fr.design.preview.PagePreview;
import com.fr.design.preview.ViewPreview; import com.fr.design.preview.ViewPreview;
import com.fr.design.preview.WriteEnhancePreview; import com.fr.design.preview.WriteEnhancePreview;
@ -890,7 +890,7 @@ public class JWorkBook extends JTemplate<WorkBook, WorkBookUndoState> {
public PreviewProvider[] supportPreview() { public PreviewProvider[] supportPreview() {
Set<PreviewProvider> set = ExtraDesignClassManager.getInstance().getArray(PreviewProvider.MARK_STRING); Set<PreviewProvider> set = ExtraDesignClassManager.getInstance().getArray(PreviewProvider.MARK_STRING);
return ArrayUtils.addAll(new PreviewProvider[]{ return ArrayUtils.addAll(new PreviewProvider[]{
new PagePreview(), new WritePreview(), new ViewPreview(), new WriteEnhancePreview() new PagePreview(), new WritePreview(), new ViewPreview(), new WriteEnhancePreview(), new MobilePreview()
}, set.toArray(new PreviewProvider[set.size()])); }, set.toArray(new PreviewProvider[set.size()]));
} }
@ -923,8 +923,7 @@ public class JWorkBook extends JTemplate<WorkBook, WorkBookUndoState> {
*/ */
@Override @Override
public void previewMenuActionPerformed(PreviewProvider provider) { public void previewMenuActionPerformed(PreviewProvider provider) {
setPreviewType(provider); super.previewMenuActionPerformed(provider);
WebPreviewUtils.preview(this, provider);
} }
/** /**

Loading…
Cancel
Save