Browse Source

Merge branch 'feature/10.0' of http://cloud.finedevelop.com:2015/scm/~plough/10-design into feature/10.0

master
plough 6 years ago
parent
commit
e23eb0e690
  1. 44
      designer-base/src/com/fr/design/extra/PluginUtils.java
  2. 3
      designer-base/src/com/fr/design/extra/PluginWebBridge.java
  3. 2
      designer-base/src/com/fr/design/extra/exe/GetInstalledPluginsExecutor.java
  4. 2
      designer-base/src/com/fr/design/extra/exe/ReadUpdateOnlineExecutor.java
  5. 24
      designer-form/src/com/fr/design/mainframe/FormCreatorDropTarget.java
  6. 22
      designer-form/src/com/fr/design/mainframe/FormWidgetDetailPane.java
  7. 10
      designer-form/src/com/fr/design/mainframe/JForm.java
  8. 63
      designer-form/src/com/fr/design/mainframe/ShareWidgetButton.java
  9. 6
      designer-form/src/com/fr/design/mainframe/ShareWidgetPane.java
  10. 7
      designer-form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java
  11. 20
      designer-realize/src/com/fr/design/mainframe/CellElementPropertyPane.java

44
designer-base/src/com/fr/design/extra/PluginUtils.java

@ -1,5 +1,6 @@
package com.fr.design.extra;
import com.fr.base.FRContext;
import com.fr.base.TemplateUtils;
import com.fr.general.Inter;
import com.fr.general.SiteCenter;
@ -201,7 +202,7 @@ public class PluginUtils {
resultJSONArray.put(jo);
}
}
return resultJSONArray;
return PluginUtils.transferLocalPluginToJson(resultJSONArray);
}
private static boolean isCompatibleCurrentEnv(String envVersion){
@ -209,7 +210,7 @@ public class PluginUtils {
}
public static JSONArray transferPluginToJson(PluginContext [] pluginContexts){
public static JSONArray transferStorePluginToJson(PluginContext [] pluginContexts){
JSONArray ja = JSONArray.create();
try {
for(PluginContext pluginContext : pluginContexts){
@ -223,19 +224,44 @@ public class PluginUtils {
jo.put("vendor", pluginContext.getVendor());
jo.put("price", pluginContext.getPrice());
jo.put("jarTime", pluginContext.getRequiredJarTime());
jo.put("isActive", pluginContext.isActive());
jo.put("isHidden", pluginContext.isHidden());
jo.put("isFree", pluginContext.isFree());
jo.put("isLicDamage", pluginContext.isLicDamaged());
jo.put("isAvailable", pluginContext.isAvailable());
jo.put("active", pluginContext.isActive());
jo.put("hidden", pluginContext.isHidden());
jo.put("free", pluginContext.isFree());
jo.put("licDamage", pluginContext.isLicDamaged());
jo.put("available", pluginContext.isAvailable());
jo.put("leftTime", String.valueOf(pluginContext.getLeftDays()));
jo.put("isTrial", pluginContext.isOnTrial());
jo.put("trial", pluginContext.isOnTrial());
jo.put("deadline", getDeadline(pluginContext));
jo.put("isRegisterFailed", pluginContext.isRegisterFailed());
jo.put("registerFailed", pluginContext.isRegisterFailed());
ja.put(jo);
}
}catch (Exception e){
FRContext.getLogger().error(e.getMessage(), e);
}
return ja;
}
public static JSONArray transferLocalPluginToJson(JSONArray resultArr) throws Exception{
JSONArray ja = JSONArray.create();
for(int i = 0; i < resultArr.length(); i++){
JSONObject jo = JSONObject.create();
JSONObject pluginJsonObject = resultArr.getJSONObject(i);
jo.put("categoryId", pluginJsonObject.getString("cid"));
jo.put("description", pluginJsonObject.optString("description"));
jo.put("downloadTimes", Integer.parseInt(pluginJsonObject.getString("downloadTimes")));
jo.put("envVersion", pluginJsonObject.getString("envversion"));
jo.put("id", Integer.parseInt(pluginJsonObject.getString("id")));
jo.put("jarTime", pluginJsonObject.getString("jartime"));
jo.put("link", pluginJsonObject.getString("link"));
jo.put("name", pluginJsonObject.getString("name"));
jo.put("pic", pluginJsonObject.getString("pic"));
jo.put("pluginId", pluginJsonObject.getString("pluginid"));
jo.put("price", Integer.parseInt(pluginJsonObject.getString("price")));
jo.put("sellerId", Integer.parseInt(pluginJsonObject.getString("sellerId")));
jo.put("uploadTime", pluginJsonObject.getString("uploadTime"));
jo.put("vendor", pluginJsonObject.getString("vendor"));
jo.put("version", pluginJsonObject.getString("version"));
ja.put(jo);
}
return ja;
}

3
designer-base/src/com/fr/design/extra/PluginWebBridge.java

@ -56,6 +56,7 @@ public class PluginWebBridge {
private static final String PLUGIN_INFO = "pluginInfo";
private static final int COREPOOLSIZE = 3;
private static final int MAXPOOLSIZE = 5;
private static final String I18N_PREFIX = "Fine-";
private static PluginWebBridge helper;
@ -572,7 +573,7 @@ public class PluginWebBridge {
* 国际化
*/
public String parseI18(final String key) {
return Inter.getLocText(key);
return Inter.getLocText(I18N_PREFIX + key);
}
/**

2
designer-base/src/com/fr/design/extra/exe/GetInstalledPluginsExecutor.java

@ -31,7 +31,7 @@ public class GetInstalledPluginsExecutor implements Executor {
@Override
public void run(Process<String> process) {
List<PluginContext> plugins = PluginManager.getContexts();
JSONArray ja = PluginUtils.transferPluginToJson(plugins.toArray(new PluginContext[plugins.size()]));
JSONArray ja = PluginUtils.transferStorePluginToJson(plugins.toArray(new PluginContext[plugins.size()]));
result = ja.toString();
}
}

2
designer-base/src/com/fr/design/extra/exe/ReadUpdateOnlineExecutor.java

@ -37,7 +37,7 @@ public class ReadUpdateOnlineExecutor implements Executor {
JSONArray jsonArray = new JSONArray();
for (PluginView plugin : plugins) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("pluginid", plugin.getID());
jsonObject.put("pluginId", plugin.getID());
jsonArray.put(jsonObject);
}
result = jsonArray.toString();

24
designer-form/src/com/fr/design/mainframe/FormCreatorDropTarget.java

@ -8,21 +8,31 @@ import com.fr.design.designer.beans.HoverPainter;
import com.fr.design.designer.beans.Painter;
import com.fr.design.designer.beans.events.DesignerEvent;
import com.fr.design.designer.beans.models.AddingModel;
import com.fr.design.designer.creator.*;
import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XCreatorUtils;
import com.fr.design.designer.creator.XLayoutContainer;
import com.fr.design.designer.creator.XWAbsoluteLayout;
import com.fr.design.designer.creator.XWFitLayout;
import com.fr.design.designer.creator.XWParameterLayout;
import com.fr.design.form.util.XCreatorConstants;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.icon.IconPathConstants;
import com.fr.design.utils.ComponentUtils;
import com.fr.form.share.SharableEditorProvider;
import com.fr.form.share.ShareLoader;
import com.fr.form.ui.ElCaseBindInfo;
import com.fr.form.ui.ElementCaseEditor;
import com.fr.form.ui.SharableElementCaseEditor;
import com.fr.form.ui.SharableWidgetBindInfo;
import com.fr.form.ui.Widget;
import com.fr.general.Inter;
import com.fr.stable.Constants;
import javax.swing.*;
import java.awt.*;
import javax.swing.BorderFactory;
import javax.swing.JWindow;
import java.awt.Color;
import java.awt.Component;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
@ -84,8 +94,8 @@ public class FormCreatorDropTarget extends DropTarget {
Widget widget = (addingXCreator.getTopLayout() != null) ? (addingXCreator.getTopLayout().toData()) : addingXCreator.toData();
if (addingXCreator.isShared()) {
String shareId = addingXCreator.getShareId();
SharableElementCaseEditor sharableEditor = ShareLoader.getLoader().getSharedElCaseEditorById(shareId);
ElCaseBindInfo bindInfo = ShareLoader.getLoader().getElCaseBindInfoById(shareId);
SharableEditorProvider sharableEditor = ShareLoader.getLoader().getSharedElCaseEditorById(shareId);
SharableWidgetBindInfo bindInfo = ShareLoader.getLoader().getElCaseBindInfoById(shareId);
if (sharableEditor != null && bindInfo != null) {
Map<String, String> tdNameMap = TableDataTreePane.getInstance(DesignModelAdapter.getCurrentModelAdapter()).addTableData(bindInfo.getName(), sharableEditor.getTableDataSource());
//合并数据集之后,可能会有数据集名称变化,做一下联动

22
designer-form/src/com/fr/design/mainframe/FormWidgetDetailPane.java

@ -3,17 +3,15 @@ package com.fr.design.mainframe;
import com.fr.base.BaseUtils;
import com.fr.base.FRContext;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.ibutton.UIHeadGroup;
import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.form.share.ShareLoader;
import com.fr.form.ui.ElCaseBindInfo;
import com.fr.form.ui.SharableWidgetBindInfo;
import com.fr.log.FineLoggerFactory;
import com.fr.general.Inter;
import com.fr.general.SiteCenter;
import com.fr.log.FineLoggerFactory;
import com.fr.share.ShareConstants;
import com.fr.stable.ArrayUtils;
import com.fr.stable.StringUtils;
@ -42,7 +40,7 @@ public class FormWidgetDetailPane extends FormDockView{
private UIScrollPane downPane;
private JPanel reuWidgetPanel;
private UIComboBox comboBox;
private ElCaseBindInfo[] elCaseBindInfoList;
private SharableWidgetBindInfo[] elCaseBindInfoList;
private UIButton deleteButton;
private UIButton resetButton;
private JPanel editPanel;
@ -119,21 +117,7 @@ public class FormWidgetDetailPane extends FormDockView{
initReuWidgetPanel();
initMenuPanel();
card = new CardLayout();
tabbedPane = new JPanel();
tabbedPane.setLayout(card);
tabbedPane.add(REPORT_TAB, reuWidgetPanel);
tabbedPane.add(CHART_TAB, new JPanel());
UIHeadGroup tabsHeaderIconPane = new UIHeadGroup(new String[] {REPORT_TAB, CHART_TAB}) {
@Override
public void tabChanged(int index) {
card.show(tabbedPane, labelButtonList.get(index).getText());
}
};
tabsHeaderIconPane.setNeedLeftRightOutLine(false);
add(tabsHeaderIconPane, BorderLayout.NORTH);
add(tabbedPane, BorderLayout.CENTER);
add(reuWidgetPanel, BorderLayout.CENTER);
}

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

@ -555,9 +555,9 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
@Override
protected void applyUndoState(FormUndoState u) {
try {
//JForm的target重置
this.setTarget((Form) u.getForm().clone());
if (this.index == FORM_TAB) {
//JForm的target重置
this.setTarget((Form) u.getForm().clone());
JForm.this.refreshRoot();
this.formDesign.getArea().setAreaSize(u.getAreaSize(), u.getHorizontalValue(), u.getVerticalValue(), u.getWidthValue(), u.getHeightValue(), u.getSlideValue());
//撤销的时候要重新选择的body布局
@ -565,9 +565,12 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
formDesign.getRootComponent() == selectedBodyLayout() ? u.getSelectWidgets() : new Widget[]{selectedBodyLayout().toData()}));
refreshToolArea();
} else {
// 只在报表块里撤销是不需要修改外部form对象的, 因为编辑的是当前报表块.
// 修改了JForm的Target需要同步修改formDesign的Target.
Form undoForm = (Form) u.getForm().clone();
String widgetName = this.formDesign.getElementCaseContainerName();
//这儿太坑了,u.getForm() 与 getTarget内容不一样
FormElementCaseProvider dataTable = getTarget().getElementCaseByName(widgetName);
FormElementCaseProvider dataTable = undoForm.getElementCaseByName(widgetName);
this.reportComposite.setSelectedWidget(dataTable);
//下面这句话是防止撤销之后直接退出编辑再编辑撤销的东西会回来,因为撤销不会保存EC
formDesign.setElementCase(dataTable);
@ -581,7 +584,6 @@ public class JForm extends JTemplate<Form, FormUndoState> implements BaseJForm {
} else {
this.undoState = u;
}
}
@Override

63
designer-form/src/com/fr/design/mainframe/ShareWidgetButton.java

@ -1,24 +1,44 @@
package com.fr.design.mainframe;
import com.fr.base.*;
import com.fr.base.BaseUtils;
import com.fr.base.iofileattr.SharableAttrMark;
import com.fr.design.designer.creator.XCreator;
import com.fr.design.designer.creator.XCreatorUtils;
import com.fr.design.gui.ilable.UILabel;
import com.fr.share.ShareConstants;
import com.fr.form.share.ShareLoader;
import com.fr.form.ui.ElCaseBindInfo;
import com.fr.form.ui.AbstractBorderStyleWidget;
import com.fr.form.ui.SharableWidgetBindInfo;
import com.fr.form.ui.Widget;
import com.fr.form.ui.container.cardlayout.WCardMainBorderLayout;
import com.fr.general.ComparatorUtils;
import com.fr.general.IOUtils;
import com.fr.share.ShareConstants;
import com.fr.stable.StringUtils;
import javax.swing.*;
import javax.swing.Icon;
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JPanel;
import java.awt.AlphaComposite;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Composite;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.LayoutManager;
import java.awt.Rectangle;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.*;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.DragGestureListener;
import java.awt.dnd.DragSource;
import java.awt.dnd.DragSourceAdapter;
import java.awt.dnd.DragSourceDragEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
@ -31,7 +51,8 @@ import java.io.Serializable;
* Time: 16:14
*/
public class ShareWidgetButton extends JPanel implements MouseListener, MouseMotionListener, Serializable {
private ElCaseBindInfo bindInfo;
private static final Dimension TAB_DEFAULT_SIZE = new Dimension(500, 300);
private SharableWidgetBindInfo bindInfo;
private MouseEvent lastPressEvent;
private JPanel reportPane;
private boolean isEdit;
@ -50,7 +71,7 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot
}
};
public ShareWidgetButton(ElCaseBindInfo bindInfo) {
public ShareWidgetButton(SharableWidgetBindInfo bindInfo) {
this.bindInfo = bindInfo;
this.setPreferredSize(new Dimension(108, 68));
initUI();
@ -127,11 +148,11 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot
};
}
public ElCaseBindInfo getBindInfo() {
public SharableWidgetBindInfo getBindInfo() {
return bindInfo;
}
public void setBindInfo(ElCaseBindInfo bindInfo) {
public void setBindInfo(SharableWidgetBindInfo bindInfo) {
this.bindInfo = bindInfo;
}
@ -194,13 +215,21 @@ public class ShareWidgetButton extends JPanel implements MouseListener, MouseMot
}
shareId = no.getBindInfo().getId();
creatorSource = ShareLoader.getLoader().getElCaseEditorById(shareId);
}
if (creatorSource != null) {
XCreator xCreator = XCreatorUtils.createXCreator(creatorSource);
xCreator.setShareId(shareId);
WidgetToolBarPane.getTarget().startDraggingBean(xCreator);
lastPressEvent = null;
this.setBorder(null);
if (creatorSource != null) {
((AbstractBorderStyleWidget)creatorSource).addWidgetAttrMark(new SharableAttrMark(true));
//tab布局WCardMainBorderLayout通过反射出来的大小是960*480
XCreator xCreator = null;
if (creatorSource instanceof WCardMainBorderLayout) {
xCreator = XCreatorUtils.createXCreator(creatorSource, TAB_DEFAULT_SIZE);
} else {
xCreator = XCreatorUtils.createXCreator(creatorSource);
}
xCreator.setBackupBound(new Rectangle(no.getBindInfo().getWidth(), no.getBindInfo().getHeight()));
xCreator.setShareId(shareId);
WidgetToolBarPane.getTarget().startDraggingBean(xCreator);
lastPressEvent = null;
this.setBorder(null);
}
}
}

6
designer-form/src/com/fr/design/mainframe/ShareWidgetPane.java

@ -1,7 +1,7 @@
package com.fr.design.mainframe;
import com.fr.form.ui.ElCaseBindInfo;
import com.fr.form.ui.SharableWidgetBindInfo;
import javax.swing.*;
import java.awt.*;
@ -12,12 +12,12 @@ import java.awt.*;
*/
public class ShareWidgetPane extends JPanel {
public ShareWidgetPane(ElCaseBindInfo[] elCaseBindInfoList, boolean isEdit) {
public ShareWidgetPane(SharableWidgetBindInfo[] elCaseBindInfoList, boolean isEdit) {
this.setBorder(BorderFactory.createEmptyBorder(10, 3, 0, 0));// 设置面板的边框 ,距离上、左、下、右 的距离
if (elCaseBindInfoList != null) {
int rowCount = (elCaseBindInfoList.length + 1) / 2;
this.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 10));
for (ElCaseBindInfo rbModuleInfo : elCaseBindInfoList) {
for (SharableWidgetBindInfo rbModuleInfo : elCaseBindInfoList) {
ShareWidgetButton widgetButton = new ShareWidgetButton(rbModuleInfo);
widgetButton.setElementCaseEdit(isEdit);
this.add(widgetButton);

7
designer-form/src/com/fr/design/widget/ui/designer/component/PaddingBoundPane.java

@ -7,8 +7,8 @@ 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.form.ui.AbstractMarginWidget;
import com.fr.form.ui.PaddingMargin;
import com.fr.form.ui.RichStyleWidgetProvider;
import com.fr.general.Inter;
import javax.swing.BorderFactory;
@ -74,8 +74,7 @@ public class PaddingBoundPane extends BasicPane{
return panel;
}
public void update(AbstractMarginWidget marginWidget) {
public void update(RichStyleWidgetProvider marginWidget) {
marginWidget.setMargin(new PaddingMargin((int)top.getValue(), (int)left.getValue(), (int)bottom.getValue(), (int)right.getValue() ));
}
@ -83,7 +82,7 @@ public class PaddingBoundPane extends BasicPane{
return "PaddingBoundPane";
}
public void populate(AbstractMarginWidget marginWidget) {
public void populate(RichStyleWidgetProvider marginWidget) {
PaddingMargin paddingMargin = marginWidget.getMargin();
top.setValue(paddingMargin.getTop());
bottom.setValue(paddingMargin.getBottom());

20
designer-realize/src/com/fr/design/mainframe/CellElementPropertyPane.java

@ -3,11 +3,8 @@
*/
package com.fr.design.mainframe;
import java.awt.*;
import javax.swing.*;
import com.fr.base.BaseUtils;
import com.fr.design.fun.BackgroundQuickUIProvider;
import com.fr.design.fun.CellAttributeProvider;
import com.fr.design.fun.PresentKindProvider;
import com.fr.design.gui.frpane.UITitlePanel;
@ -28,6 +25,13 @@ import com.fr.report.cell.DefaultTemplateCellElement;
import com.fr.report.cell.Elem;
import com.fr.report.elementcase.TemplateElementCase;
import javax.swing.BorderFactory;
import javax.swing.Icon;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import java.awt.BorderLayout;
import java.awt.Dimension;
/**
* 所有组件一次全部加载不存在延迟加载 原因设计器打开第一张模板的时候会初始化许多许多东西这个过程需要很长时间快的3-5s
@ -53,9 +57,11 @@ public class CellElementPropertyPane extends DockingView {
@Override
public boolean accept(PluginContext context) {
return context.contain(PluginModule.ExtraDesign, PresentKindProvider.MARK_STRING) ||
context.contain(PluginModule.ExtraDesign, CellAttributeProvider.MARK_STRING);
return context.contain(PluginModule.ExtraDesign, BackgroundQuickUIProvider.MARK_STRING)
|| context.contain(PluginModule.ExtraDesign, PresentKindProvider.MARK_STRING)
|| context.contain(PluginModule.ExtraDesign, CellAttributeProvider.MARK_STRING);
}
});
}

Loading…
Cancel
Save