Browse Source

Merge pull request #654 in DESIGN/design from ~NEIL/design:feature/10.0 to feature/10.0

* commit '983117dacfa53872df134929ef187642921be593':
  1
  CHART-3460 设计器启动慢
  DEC-5669 远程切换到本地时无法切换
  REPORT-13254 10.0的设计器mac不能点最大按钮
  REPORT-13215 10.0设计器启动过程中可能由于报错导致白色蒙层不消失
  rt
  rt
  REPORT-13215 10.0设计器启动过程中可能由于报错导致白色蒙层不消失
  无JIRA任务 整理开放接口以及文档
  无JIRA任务 整理开放接口以及文档
  CHART-3223 && CHART-3246 && CHART-3248 交互
  CHART-3215 交互
  REPORT-12635
research/10.0
neil 6 years ago
parent
commit
f62d186869
  1. 31
      designer-base/src/main/java/com/fr/design/fun/HyperlinkProvider.java
  2. 16
      designer-base/src/main/java/com/fr/design/fun/JavaScriptActionProvider.java
  3. 24
      designer-base/src/main/java/com/fr/design/fun/impl/AbstractHyperlinkProvider.java
  4. 16
      designer-base/src/main/java/com/fr/design/fun/impl/AbstractJavaScriptActionProvider.java
  5. 3
      designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java
  6. 13
      designer-base/src/main/java/com/fr/start/ServerStarter.java
  7. 2
      designer-base/src/main/java/com/fr/start/server/FineEmbedServerActivator.java
  8. 42
      designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java
  9. 2
      designer-chart/src/main/java/com/fr/design/chart/ChartDesignerActivator.java
  10. 21
      designer-chart/src/main/java/com/fr/design/chart/ChartTypePane.java
  11. 10
      designer-chart/src/main/java/com/fr/design/chart/gui/ChartWidgetOption.java
  12. 6
      designer-chart/src/main/java/com/fr/design/chart/series/SeriesCondition/impl/ChartHyperPoplinkPane.java
  13. 4
      designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypePane.java
  14. 14
      designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartReportDataPane.java
  15. 7
      designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartTableDataPane.java
  16. 2
      designer-chart/src/main/java/com/fr/van/chart/designer/TableLayout4VanChartHelper.java
  17. 8
      designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java

31
designer-base/src/main/java/com/fr/design/fun/HyperlinkProvider.java

@ -1,21 +1,44 @@
package com.fr.design.fun;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.stable.fun.Level;
import com.fr.js.Hyperlink;
import com.fr.stable.fun.mark.Mutable;
/**
* Created by zack on 2016/1/20.
*/
public interface HyperlinkProvider extends Mutable {
public interface HyperlinkProvider<T extends Hyperlink> extends Mutable {
String XML_TAG = "HyperlinkProvider";
int CURRENT_LEVEL = 2;
/**
* 创建一个超级连接类型
* @return NameableCreator
* 超级链接的描述信息如果是实现类中重载了这个方法就不需要再实现下面的三个方法
* @see HyperlinkProvider#text()
* @see HyperlinkProvider#target()
* @see HyperlinkProvider#appearance()
* 如果并不重载就需要分别实现上面的三个方法不推荐重载这个方法
* @return 描述信息
*/
NameableCreator createHyperlinkCreator();
/**
* 超级链接的名字
* @return 名字
*/
String text();
/**
* 超级链接的实现类
* @return 实现类
*/
Class<T> target();
/**
* 超级链接的界面配置类
* @return 配置类
*/
Class<? extends BasicBeanPane<T>> appearance();
}

16
designer-base/src/main/java/com/fr/design/fun/JavaScriptActionProvider.java

@ -2,11 +2,12 @@ package com.fr.design.fun;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.javascript.JavaScriptActionPane;
import com.fr.design.mainframe.JTemplate;
import com.fr.js.JavaScript;
import com.fr.stable.fun.mark.Mutable;
/**
* Created by zack on 2015/8/14.
* 控件的事件扩展接口
*/
public interface JavaScriptActionProvider extends Mutable{
@ -14,10 +15,21 @@ public interface JavaScriptActionProvider extends Mutable{
int CURRENT_LEVEL = 1;
/**
* 事件的界面
*/
FurtherBasicBeanPane<? extends JavaScript> getJavaScriptActionPane();
/**
* 这个界面在哪些类型模板设计的时候会出现
* @see com.fr.design.mainframe.JWorkBook
* @see com.fr.design.mainframe.JForm
*/
boolean accept(JTemplate template);
@Deprecated
FurtherBasicBeanPane<? extends JavaScript> getJavaScriptActionPane(JavaScriptActionPane pane);
@Deprecated
boolean isSupportType();
}

24
designer-base/src/main/java/com/fr/design/fun/impl/AbstractHyperlinkProvider.java

@ -1,6 +1,10 @@
package com.fr.design.fun.impl;
import com.fr.design.beans.BasicBeanPane;
import com.fr.design.fun.HyperlinkProvider;
import com.fr.design.gui.controlpane.NameObjectCreator;
import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.stable.StringUtils;
import com.fr.stable.fun.impl.AbstractProvider;
import com.fr.stable.fun.mark.API;
@ -18,4 +22,24 @@ public abstract class AbstractHyperlinkProvider extends AbstractProvider impleme
public String mark4Provider() {
return getClass().getName();
}
@Override
public NameableCreator createHyperlinkCreator() {
return new NameObjectCreator(text(), target(), appearance());
}
@Override
public String text() {
return StringUtils.EMPTY;
}
@Override
public Class target() {
return null;
}
@Override
public Class<? extends BasicBeanPane> appearance() {
return null;
}
}

16
designer-base/src/main/java/com/fr/design/fun/impl/AbstractJavaScriptActionProvider.java

@ -3,6 +3,8 @@ package com.fr.design.fun.impl;
import com.fr.design.beans.FurtherBasicBeanPane;
import com.fr.design.fun.JavaScriptActionProvider;
import com.fr.design.javascript.JavaScriptActionPane;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.mainframe.JTemplate;
import com.fr.js.JavaScript;
import com.fr.stable.fun.impl.AbstractProvider;
import com.fr.stable.fun.mark.API;
@ -27,10 +29,16 @@ public abstract class AbstractJavaScriptActionProvider extends AbstractProvider
return getJavaScriptActionPane();
}
/**
* 判断是否是支持的类型cpt,frm默认是
* @return
*/
@Override
public boolean accept(JTemplate template) {
// 这里只是为了兼容原来的isSupportType方法
boolean result = isSupportType();
if (result) {
return true;
}
return true;
}
@Override
public boolean isSupportType(){
return true;

3
designer-base/src/main/java/com/fr/design/javascript/JavaScriptActionPane.java

@ -7,6 +7,7 @@ import com.fr.design.dialog.DialogActionAdapter;
import com.fr.design.fun.JavaScriptActionProvider;
import com.fr.design.gui.frpane.UIComboBoxPane;
import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.mainframe.DesignerContext;
import com.fr.design.write.submit.DBManipulationPane;
import com.fr.form.ui.WebContentUtils;
import com.fr.js.JavaScript;
@ -45,7 +46,7 @@ public abstract class JavaScriptActionPane extends UIComboBoxPane<JavaScript> {
Set<JavaScriptActionProvider> javaScriptActionProviders = ExtraDesignClassManager.getInstance().getArray(JavaScriptActionProvider.XML_TAG);
if (javaScriptActionProviders != null) {
for (JavaScriptActionProvider jsp : javaScriptActionProviders) {
if(jsp.isSupportType()){
if(jsp.accept(DesignerContext.getDesignerFrame().getSelectedJTemplate())){
paneList.add(jsp.getJavaScriptActionPane(this));
}
}

13
designer-base/src/main/java/com/fr/start/ServerStarter.java

@ -5,18 +5,11 @@ import com.fr.design.DesignerEnvManager;
import com.fr.design.utils.BrowseUtils;
import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralContext;
import com.fr.log.FineLoggerFactory;
import com.fr.stable.OperatingSystem;
import com.fr.stable.StableUtils;
import com.fr.start.server.FineEmbedServer;
import com.fr.start.server.FineEmbedServerMonitor;
import com.fr.workspace.WorkContext;
import javax.swing.JOptionPane;
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@ -66,7 +59,11 @@ public class ServerStarter {
@Override
public void run() {
FineEmbedServer.start();
try {
FineEmbedServer.start();
} finally {
FineEmbedServerMonitor.getInstance().setComplete();
}
BrowseUtils.browser(url);
}
});

2
designer-base/src/main/java/com/fr/start/server/FineEmbedServerActivator.java

@ -49,7 +49,7 @@ public class FineEmbedServerActivator extends Activator {
stopSpring();
stopServerActivator();
stopTomcat();
} catch (LifecycleException e) {
} catch (Exception e) {
FineLoggerFactory.getLogger().error(e.getMessage(), e);
}
}

42
designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java

@ -127,6 +127,11 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
readVanChart();
PluginModule.registerAgent(PluginModule.ExtraChartDesign, classManager);
}
//安装插件,图表类型热更新。
//不在static原因:放在static,启动过程中图表插件init也会触发(不需要)
public static void addPluginChangedListener() {
GeneralContext.listenPluginRunningChanged(new PluginEventListener() {
@Override
@ -151,43 +156,22 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstance().getAllChartBaseNames();
ChartWidgetOption[] child = new ChartWidgetOption[typeName.length];
final Chart[][] allCharts = new Chart[typeName.length][];
for (int i = 0; i < typeName.length; i++) {
String plotID = typeName[i].getPlotID();
int index = 0;
for (ChartInternationalNameContentBean bean : typeName) {
String plotID = bean.getPlotID();
Chart[] rowChart = ChartTypeManager.getInstance().getChartTypes(plotID);
if (ArrayUtils.isEmpty(rowChart)) {
if (ArrayUtils.isEmpty(rowChart) && !ChartTypeManager.innerChart(plotID)) {
continue;
}
String iconPath = ChartTypeInterfaceManager.getInstance().getIconPath(plotID);
Icon icon = IOUtils.readIcon(iconPath);
child[i] = new ChartWidgetOption(com.fr.design.i18n.Toolkit.i18nText(typeName[i].getName()), icon, ChartEditor.class, rowChart[0]);
allCharts[i] = rowChart;
child[index] = new ChartWidgetOption(com.fr.design.i18n.Toolkit.i18nText(bean.getName()), icon, ChartEditor.class, plotID);
index++;
}
return child;
}
//加载所有图表图片
private static void initAllChartsDemoImage(Chart[][] allCharts) {
for (Chart[] rowChart : allCharts) {
if (rowChart == null) {
continue;
}
//加载初始化图表模型图片
initChartsDemoImage(rowChart);
}
}
private static void initChartsDemoImage(Chart[] rowChart) {
for (Chart aRowChart : rowChart) {
//此时,为图片生成模型数据
aRowChart.createSlotImage();
}
}
private static void readVanChart() {
addChartTypeInterface(VAN_CHART_PRIORITY, PiePlot4VanChart.VAN_CHART_PIE_PLOT, new PieIndependentVanChartInterface());
@ -252,7 +236,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
}
}
private static IndependentChartUIProvider getChartTypeInterface(String plotID) {
private IndependentChartUIProvider getChartTypeInterface(String plotID) {
if (idAndPriorityMap.containsKey(plotID)) {
String priority = idAndPriorityMap.get(plotID);
if (chartTypeInterfaces.containsKey(priority)) {
@ -303,7 +287,7 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr
}
}
private static String getChartName(String plotID, IndependentChartUIProvider provider) {
private String getChartName(String plotID, IndependentChartUIProvider provider) {
String name = provider.getPlotTypeTitle4PopupWindow();
if (StringUtils.isEmpty(name)) {
name = ChartTypeManager.getInstance().getChartName(plotID);

2
designer-chart/src/main/java/com/fr/design/chart/ChartDesignerActivator.java

@ -52,6 +52,8 @@ public class ChartDesignerActivator extends Activator implements Prepare {
DesignImageEvent.registerDefaultCallbackEvent(HistoryTemplateListPane.getInstance());
DesignImageEvent.registerDownloadSourcesEvent(new DownloadOnlineSourcesHelper());
ChartTypeInterfaceManager.addPluginChangedListener();
}
@Override

21
designer-chart/src/main/java/com/fr/design/chart/ChartTypePane.java

@ -15,25 +15,32 @@ import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.license.exception.RegistEditionException;
import com.fr.license.function.VT4FR;
import javax.swing.*;
import javax.swing.BorderFactory;
import javax.swing.DefaultListCellRenderer;
import javax.swing.DefaultListModel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.ListCellRenderer;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.Color;
import java.awt.Component;
public class ChartTypePane extends ChartCommonWizardPane {
private static final long serialVersionUID = -1175602484968520546L;
private ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstance().getAllChartBaseNames();
private ChartInternationalNameContentBean[] typeName = ChartTypeManager.getInstanceWithCheck().getAllChartBaseNames();
private Chart[][] charts4Icon = null;
{
charts4Icon = new Chart[this.typeName.length][];
for (int i = 0; i < this.typeName.length; i++) {
Chart[] rowCharts = ChartTypeManager.getInstance().getChartTypes(this.typeName[i].getPlotID());
Chart[] rowCharts = ChartTypeManager.getInstanceWithCheck().getChartTypes(this.typeName[i].getPlotID());
int rowChartsCount = rowCharts.length;
charts4Icon[i] = new Chart[rowChartsCount];
for (int j = 0; j < rowChartsCount; j++) {
@ -137,7 +144,7 @@ public class ChartTypePane extends ChartCommonWizardPane {
int subIndex = 0;
for (int i = 0; i < typeName.length; i++) {
Chart [] charts = ChartTypeManager.getInstance().getChartTypes(typeName[i].getPlotID());
Chart[] charts = ChartTypeManager.getInstanceWithCheck().getChartTypes(typeName[i].getPlotID());
for (int j = 0; j < charts.length; j++) {
if (charts[j].getPlot().match4GUI(plot)) {
mainIndex = i;
@ -154,7 +161,7 @@ public class ChartTypePane extends ChartCommonWizardPane {
public void update(Chart oldChart) {
String plotID = typeName[mainTypeList.getSelectedIndex()].getPlotID();
Chart chart = ChartTypeManager.getInstance().getChartTypes(plotID)[iconViewList.getSelectedIndex()];
Chart chart = ChartTypeManager.getInstanceWithCheck().getChartTypes(plotID)[iconViewList.getSelectedIndex()];
if(chart.getPlot() != null){
if(chart.getPlot() instanceof MapPlot && !supportMap()){
JOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Map_Not_Supported"));

10
designer-chart/src/main/java/com/fr/design/chart/gui/ChartWidgetOption.java

@ -2,11 +2,12 @@ package com.fr.design.chart.gui;
import com.fr.base.FRContext;
import com.fr.chart.chartattr.Chart;
import com.fr.chart.charttypes.ChartTypeManager;
import com.fr.design.gui.core.WidgetOption;
import com.fr.form.ui.ChartEditor;
import com.fr.form.ui.Widget;
import javax.swing.*;
import javax.swing.Icon;
/**
* 表单中 图表控件信息, 名称, class, form中通过XcreatorUtils反射类 实现XChartEditor的初始化.
@ -19,13 +20,13 @@ public class ChartWidgetOption extends WidgetOption {
private String optionName;
private Icon optionIcon;
private Class<? extends ChartEditor> widgetClass;
private Chart chart;
private String chartID;
public ChartWidgetOption(String optionName, Icon optionIcon, Class<? extends ChartEditor> widgetClass, Chart chart) {
public ChartWidgetOption(String optionName, Icon optionIcon, Class<? extends ChartEditor> widgetClass, String chartID) {
this.optionName = optionName;
this.optionIcon = optionIcon;
this.widgetClass = widgetClass;
this.chart = chart;
this.chartID = chartID;
}
/**
@ -37,6 +38,7 @@ public class ChartWidgetOption extends WidgetOption {
Class<? extends ChartEditor> clz = widgetClass();
try {
ChartEditor widget = clz.newInstance();
Chart chart = ChartTypeManager.getInstanceWithCheck().getChartTypes(this.chartID)[0];
widget.addChart((Chart) chart.clone());
return widget;
} catch (InstantiationException e) {

6
designer-chart/src/main/java/com/fr/design/chart/series/SeriesCondition/impl/ChartHyperPoplinkPane.java

@ -15,8 +15,8 @@ import com.fr.design.module.DesignModuleFactory;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.log.FineLoggerFactory;
import java.awt.*;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.HashMap;
/**
@ -66,7 +66,7 @@ public class ChartHyperPoplinkPane extends AbstractHyperLinkPane<ChartHyperPopli
private ChartCollection createChartCollection() {
ChartCollection cc = new ChartCollection();
Chart chart = ChartTypeManager.getFirstChart();
Chart chart = ChartTypeManager.getInstanceWithCheck().getFirstChart();
if (chart != null) {
try {
cc.addChart((Chart) chart.clone());

4
designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/ChartTypePane.java

@ -173,9 +173,9 @@ public class ChartTypePane extends AbstractChartAttrPane{
//plot改变的话图表类型就算改变了
chart.setWrapperName(ChartTypeManager.getInstance().getWrapperName(plotID));
chart.setWrapperName(ChartTypeManager.getInstanceWithCheck().getWrapperName(plotID));
chart.setChartImagePath(ChartTypeManager.getInstance().getChartImagePath(plotID));
chart.setChartImagePath(ChartTypeManager.getInstanceWithCheck().getChartImagePath(plotID));
boolean isUseDefault = ChartTypeInterfaceManager.getInstance().isUseDefaultPane(plotID);

14
designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartReportDataPane.java

@ -6,6 +6,7 @@ import com.fr.design.formula.TinyFormulaPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.data.report.AbstractReportDataContentPane;
import javax.swing.BorderFactory;
@ -49,16 +50,17 @@ public abstract class AbstractExtendedChartReportDataPane<T extends AbstractData
double p = TableLayout.PREFERRED;
double f = TableLayout.FILL;
double[] columnSize = {f, COMPONENT_WIDTH};
double[] columnSize = {ChartDataPane.LABEL_WIDTH, COMPONENT_WIDTH};
double[] rowSize = new double[len + (hasCustomFieldPane() ? 2 : 0)];
Arrays.fill(rowSize, p);
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 24, 6);
panel.setBorder(BorderFactory.createEmptyBorder(0, 20, 0, 8));
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize, 0, 6);
this.setLayout(new BorderLayout());
this.add(panel, BorderLayout.CENTER);
this.add(addSouthPane(), BorderLayout.SOUTH);
this.setLayout(new BorderLayout(0,6));
this.add(panel, BorderLayout.NORTH);
this.add(addSouthPane(), BorderLayout.CENTER);
this.setBorder(BorderFactory.createEmptyBorder(0, 15, 0, 8));
}
protected JPanel addSouthPane() {

7
designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartTableDataPane.java

@ -7,6 +7,7 @@ import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.layout.TableLayout;
import com.fr.design.layout.TableLayoutHelper;
import com.fr.design.mainframe.chart.gui.ChartDataPane;
import com.fr.design.mainframe.chart.gui.data.CalculateComboBox;
import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane;
import com.fr.general.GeneralUtils;
@ -43,13 +44,13 @@ public abstract class AbstractExtendedChartTableDataPane<T extends AbstractDataC
}
double p = TableLayout.PREFERRED;
double[] columnSize = {TableLayout.FILL, 120};
double[] columnSize = {ChartDataPane.LABEL_WIDTH, 122};
double[] rowSize = new double[len];
Arrays.fill(rowSize, p);
JPanel panel = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize);
JPanel panel = TableLayoutHelper.createGapTableLayoutPane(components, rowSize, columnSize,0,6);
this.setLayout(new BorderLayout(0, 6));
this.setLayout(new BorderLayout(0, 4));
this.setBorder(BorderFactory.createEmptyBorder(2, 24, 0, 15));
this.add(panel, BorderLayout.NORTH);

2
designer-chart/src/main/java/com/fr/van/chart/designer/TableLayout4VanChartHelper.java

@ -37,7 +37,7 @@ public class TableLayout4VanChartHelper {
public static JPanel createExpandablePaneWithTitle(String title, Component[][] components) {
JPanel panel = createGapTableLayoutPane(components);
return createExpandablePaneWithTitle(title, panel);
return createExpandablePaneWithTitleTopGap(title, panel);
}
public static JPanel createExpandablePaneWithTitle(String title, JPanel panel) {

8
designer-realize/src/main/java/com/fr/start/module/DesignerStartup.java

@ -52,9 +52,11 @@ public class DesignerStartup extends Activator {
@Override
public void run() {
designer.show(args);
DesignerContext.getDesignerFrame().getProgressDialog().dispose();
try {
designer.show(args);
} finally {
DesignerContext.getDesignerFrame().getProgressDialog().dispose();
}
}
});
service.shutdown();

Loading…
Cancel
Save