From 572e3dc644970428b4bf49884d4e38ab126a5cac Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Fri, 21 Sep 2018 16:10:30 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E5=8D=95=E5=85=83=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/cell/model/ModelTest.java | 94 +++++++++++++++++++ .../manager/impl/SearchManegerTest.java | 80 ++++++++++++++++ 2 files changed, 174 insertions(+) create mode 100644 designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java create mode 100644 designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/SearchManegerTest.java diff --git a/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java new file mode 100644 index 000000000..5d32b85bb --- /dev/null +++ b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/cell/model/ModelTest.java @@ -0,0 +1,94 @@ +package com.fr.design.mainframe.alphafine.cell.model; + +import com.fr.design.mainframe.alphafine.AlphaFineConstants; +import com.fr.design.mainframe.alphafine.CellType; +import com.fr.json.JSONException; +import com.fr.json.JSONObject; +import org.junit.Assert; +import org.junit.Test; + +public class ModelTest { + @Test + public void documentModelTest() { + DocumentModel documentModel = new DocumentModel("name", "content", 1); + Assert.assertEquals("name", documentModel.getName()); + Assert.assertEquals("content", documentModel.getContent()); + Assert.assertEquals(1, documentModel.getDocumentId()); + Assert.assertEquals(AlphaFineConstants.DOCUMENT_DOC_URL + documentModel.getDocumentId() + ".html", documentModel.getDocumentUrl()); + Assert.assertEquals(AlphaFineConstants.DOCUMENT_INFORMATION_URL + documentModel.getDocumentId(), documentModel.getInformationUrl()); + Assert.assertEquals(documentModel.getStoreInformation(), documentModel.getInformationUrl()); + Assert.assertEquals(CellType.DOCUMENT, documentModel.getType()); + Assert.assertEquals(true, documentModel.hasAction()); + Assert.assertEquals(true, documentModel.isNeedToSendToServer()); + + documentModel.setDescription("test"); + Assert.assertEquals("test", documentModel.getDescription()); + + DocumentModel another = new DocumentModel("another", "another", 1); + documentModel.doAction(); + Assert.assertTrue(another.equals(documentModel)); + Assert.assertNotNull(documentModel.modelToJson()); + } + + @Test + public void bottomModelTest() { + BottomModel bottomModel = new BottomModel(); + Assert.assertEquals(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Internet_Forum"), bottomModel.getGoToWeb()); + Assert.assertEquals(CellType.BOTTOM, bottomModel.getType()); + try { + Assert.assertEquals(JSONObject.EMPTY, bottomModel.modelToJson()); + } catch (JSONException e) { + e.printStackTrace(); + } + Assert.assertEquals(true, bottomModel.hasAction()); + bottomModel.doAction(); + + } + + @Test + public void fileModelTest() { + FileModel fileModel = new FileModel("name", "test\\\\"); + Assert.assertEquals(CellType.FILE, fileModel.getType()); + Assert.assertNotNull(fileModel.modelToJson()); + FileModel anotherFileModel = new FileModel("anotherFileModel", "test\\\\"); + Assert.assertTrue(anotherFileModel.equals(fileModel)); + } + + @Test + public void moreModelTest() { + MoreModel moreModel = new MoreModel("name"); + Assert.assertTrue(!moreModel.hasAction()); + Assert.assertTrue(!moreModel.isNeedToSendToServer()); + Assert.assertEquals(CellType.MORE, moreModel.getType()); + } + + @Test + public void noResultModelTest() { + NoResultModel noResultModel = new NoResultModel("test"); + Assert.assertTrue(!noResultModel.hasAction()); + Assert.assertTrue(!noResultModel.isNeedToSendToServer()); + Assert.assertEquals(CellType.NO_RESULT, noResultModel.getType()); + } + + @Test + public void pluginModelTest() { + PluginModel pluginModel = new PluginModel("name", "content", "url", "version", "jartime", "link", "pluginId", CellType.PLUGIN, 10000, 1); + Assert.assertTrue(pluginModel.hasAction()); + Assert.assertTrue(pluginModel.isNeedToSendToServer()); + Assert.assertEquals(CellType.PLUGIN, pluginModel.getType()); + Assert.assertNotNull(pluginModel.modelToJson()); + } + + @Test + public void robotModelTest(){ + RobotModel robotModel = new RobotModel("title","content"); + Assert.assertTrue(robotModel.hasAction()); + Assert.assertTrue(robotModel.isNeedToSendToServer()); + Assert.assertEquals(CellType.ROBOT, robotModel.getType()); + try { + Assert.assertNotNull(robotModel.modelToJson()); + } catch (JSONException e) { + e.printStackTrace(); + } + } +} diff --git a/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/SearchManegerTest.java b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/SearchManegerTest.java new file mode 100644 index 000000000..e09be0cfb --- /dev/null +++ b/designer-realize/src/test/java/com.fr/design/mainframe/alphafine/search/manager/impl/SearchManegerTest.java @@ -0,0 +1,80 @@ +package com.fr.design.mainframe.alphafine.search.manager.impl; + +import com.fr.design.mainframe.alphafine.AlphaFineHelper; +import com.fr.design.mainframe.alphafine.CellType; +import com.fr.design.mainframe.alphafine.model.SearchResult; +import com.fr.json.JSONObject; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +public class SearchManegerTest { + SimilarSearchManeger similarSearchManeger; + ComplementAdviceManager complementAdviceManager; + DocumentSearchManager documentSearchManager; + PluginSearchManager pluginSearchManager; + RecommendSearchManager recommendSearchManager; + RecentSearchManager recentSearchManager; + ActionSearchManager actionSearchManager; + FileSearchManager fileSearchManager; + SegmentationManager segmentationManager; + + @Before + public void setUp() { + recentSearchManager = RecentSearchManager.getInstance(); + recommendSearchManager = RecommendSearchManager.getInstance(); + similarSearchManeger = SimilarSearchManeger.getInstance(); + complementAdviceManager = ComplementAdviceManager.getInstance(); + documentSearchManager = DocumentSearchManager.getInstance(); + pluginSearchManager = PluginSearchManager.getInstance(); + actionSearchManager = ActionSearchManager.getInstance(); + fileSearchManager = FileSearchManager.getInstance(); + segmentationManager = SegmentationManager.getInstance(); + } + + @Test + public void getSearchResultTest() { + + //检测网络情况 + Assert.assertTrue(AlphaFineHelper.isNetworkOk()); + + //正常搜索情况 + SearchResult lessModelList; + lessModelList = recentSearchManager.getLessSearchResult(new String[]{"数据集"}); + Assert.assertNotNull(lessModelList); + + lessModelList = similarSearchManeger.getLessSearchResult(new String[]{"数据集"}); + Assert.assertEquals(lessModelList.get(1).getType(), CellType.ROBOT); + + lessModelList = complementAdviceManager.getAllSearchResult(new String[]{"数据集"}); + Assert.assertEquals(lessModelList.get(1).getType(), CellType.ROBOT); + + //返回MoreSearchResult + SearchResult moreModelList; + moreModelList = similarSearchManeger.getMoreSearchResult("数据集"); + Assert.assertNotNull(moreModelList); + + moreModelList = recommendSearchManager.getMoreSearchResult("数据集"); + Assert.assertNotNull(moreModelList); + } + + @Test + public void getModelFromCloudTest() { + Assert.assertNotNull(SimilarSearchManeger.getModelFromCloud(new JSONObject())); + Assert.assertNotNull(DocumentSearchManager.getModelFromCloud(new JSONObject())); + Assert.assertNotNull(PluginSearchManager.getModelFromCloud(new JSONObject())); + } + + @Test + public void isNeedSegmentationTest() { + Assert.assertEquals(segmentationManager.isNeedSegmentation("多维数据集"), true); + } + + @Test + public void startSegmentationTest() { + String[] result = {"结果报表", "结果", "报表"}; + Assert.assertEquals(segmentationManager.startSegmentation("结果报表"), result); + + } + +} From 8dfe80a6a58c5e05e6e5cbc4235f73e6274fb945 Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Tue, 25 Sep 2018 12:20:43 +0800 Subject: [PATCH 02/10] =?UTF-8?q?REPORT-11538=20=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E6=8F=90=E4=BA=A4=E4=BA=8B=E4=BB=B6=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E9=83=A8=E5=88=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../design/gui/columnrow/ColumnRowPane.java | 475 +++++++++--------- .../design/javascript/ListenerEditPane.java | 260 +++++----- 2 files changed, 371 insertions(+), 364 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/columnrow/ColumnRowPane.java b/designer-base/src/main/java/com/fr/design/gui/columnrow/ColumnRowPane.java index 8f9e508d9..615a17bce 100644 --- a/designer-base/src/main/java/com/fr/design/gui/columnrow/ColumnRowPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/columnrow/ColumnRowPane.java @@ -1,8 +1,17 @@ package com.fr.design.gui.columnrow; -import java.awt.BorderLayout; -import java.awt.Dimension; -import java.awt.GridLayout; +import com.fr.design.designer.IntervalConstants; +import com.fr.design.event.UIObserver; +import com.fr.design.event.UIObserverListener; +import com.fr.design.gui.ispinner.ColumnRowSpinner; +import com.fr.design.gui.ispinner.UIBasicSpinner; +import com.fr.design.gui.ispinner.UpperCaseSpinner; +import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.general.ComparatorUtils; +import com.fr.stable.ColumnRow; +import com.fr.stable.StableUtils; +import com.fr.stable.StringUtils; import javax.swing.JFormattedTextField; import javax.swing.JPanel; @@ -16,19 +25,9 @@ import javax.swing.text.AbstractDocument; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.DocumentFilter; - -import com.fr.design.designer.IntervalConstants; -import com.fr.design.event.UIObserver; -import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.design.gui.ispinner.UIBasicSpinner; -import com.fr.design.gui.ispinner.UpperCaseSpinner; -import com.fr.design.gui.ispinner.ColumnRowSpinner; -import com.fr.general.ComparatorUtils; -import com.fr.stable.ColumnRow; -import com.fr.stable.StableUtils; -import com.fr.stable.StringUtils; -import com.fr.design.utils.gui.GUICoreUtils; +import java.awt.BorderLayout; +import java.awt.Dimension; +import java.awt.GridLayout; /** * the component to edit ColumnRow @@ -37,224 +36,228 @@ import com.fr.design.utils.gui.GUICoreUtils; */ public class ColumnRowPane extends JPanel implements UIObserver { - private static final long serialVersionUID = 1L; - private static String[] columnarray = new String[1000]; - private static String[] rowarray = new String[5000]; - - - protected UpperCaseSpinner columnSpinner; - protected UIBasicSpinner rowSpinner; - - static { - for (int i = 1; i < 1000; i++) { - columnarray[i - 1] = StableUtils.convertIntToABC(i); - } - for (int i = 1; i < 5000; i++) { - rowarray[i - 1] = StringUtils.EMPTY + i; - } - } - - protected DocumentListener d = new DocumentListener() { - - - @Override - public void removeUpdate(DocumentEvent e) { - String rolText = ((DefaultEditor) columnSpinner.getEditor()).getTextField().getText(); - String rowText = ((DefaultEditor) rowSpinner.getEditor()).getTextField().getText(); - if (rolText == null || rolText.length() == 0 || rowText == null || rowText.length() == 0) { - return; - } - int col = StableUtils.convertABCToInt(rolText) - 1; - int row = Integer.parseInt(rowText) - 1; - setColumnRow(ColumnRow.valueOf(col, row)); - } - - @Override - public void insertUpdate(DocumentEvent e) { - int col = StableUtils.convertABCToInt(((DefaultEditor) columnSpinner.getEditor()).getTextField().getText()) - 1; - int row = Integer.parseInt(((DefaultEditor) rowSpinner.getEditor()).getTextField().getText()) - 1; - setColumnRow(ColumnRow.valueOf(col, row)); - } - - @Override - public void changedUpdate(DocumentEvent e) { - - } - }; - - - private UIObserverListener uiObserverListener; - private ColumnRow cr; - - - public ColumnRowPane() { - this.initComponents(); - iniListener(); - } - - - /** - * 初始化元素 - */ - public void initComponents() { - this.setLayout(new GridLayout(0, 2, IntervalConstants.INTERVAL_L6, 0)); - initColSpinner(); - this.add(columnSpinner, BorderLayout.WEST); - initRowSpinner(); - this.add(rowSpinner); - this.addDocumentListener(d); - } - - private void iniListener() { - if (shouldResponseChangeListener()) { - this.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - if (uiObserverListener == null) { - return; - } - uiObserverListener.doChange(); - } - }); - } - } - - - protected void initRowSpinner() { - rowSpinner = new ColumnRowSpinner((new SpinnerListModel(rowarray))) { - public boolean shouldResponseChangeListener() { - return false; - } - - }; - rowSpinner.setPreferredSize(new Dimension(60, 24)); - JFormattedTextField rftf = GUICoreUtils.getSpinnerTextField(rowSpinner); - if (rftf != null) { - rftf.setColumns(4); // specify more width than we need - rftf.setHorizontalAlignment(UITextField.LEFT); - } - } - - protected void initColSpinner() { - SpinnerListModel columnSpinnerListModel = new SpinnerListModel(columnarray); - columnSpinner = new UpperCaseSpinner(columnSpinnerListModel) { - public boolean shouldResponseChangeListener() { - return false; - } - }; - columnSpinner.setPreferredSize(new Dimension(60, 24)); - JFormattedTextField cftf = GUICoreUtils.getSpinnerTextField(columnSpinner); - if (cftf != null) { - cftf.setColumns(3); // specify more width than we need - cftf.setHorizontalAlignment(UITextField.LEFT); - } - - ((AbstractDocument) cftf.getDocument()).setDocumentFilter(new DocumentFilter() { - public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { - fb.insertString(offset, string.toUpperCase(), attr); - } - - public void replace(FilterBypass fb, int offset, int length, String string, AttributeSet attr) throws BadLocationException { - if (string != null) { - string = string.toUpperCase(); - } - fb.replace(offset, length, string, attr); - } - }); - } - - protected void addDocumentListener(DocumentListener l) { - ((DefaultEditor) columnSpinner.getEditor()).getTextField().getDocument().addDocumentListener(l); - ((DefaultEditor) rowSpinner.getEditor()).getTextField().getDocument().addDocumentListener(l); - } - - private void removeDocumentListener(DocumentListener l) { - ((DefaultEditor) columnSpinner.getEditor()).getTextField().getDocument().removeDocumentListener(l); - ((DefaultEditor) rowSpinner.getEditor()).getTextField().getDocument().removeDocumentListener(l); - } - - /** - * columnSpinner与rowSpinner应该整体考虑,设置ColumnRow应该只触发一次事件 - * - * @param columnRow - */ - public void setColumnRow(ColumnRow columnRow) { - if (!ComparatorUtils.equals(cr, columnRow)) { - setGlobalName(); - removeDocumentListener(d); - cr = columnRow; - addDocumentListener(d); - fireChanged(); - } - } - - public void setGlobalName(){ - - } - - public void populate(ColumnRow columnRow) { - cr = columnRow; - int column = columnRow.getColumn(); - if (column < 0) { - column = 0; - } - removeDocumentListener(d); - columnSpinner.setValue(StableUtils.convertIntToABC(column + 1)); - int row = columnRow.getRow(); - // shoc 小于0就蹦了 - if (row < 0) { - row = 0; - } - rowSpinner.setValue("" + (row + 1)); - addDocumentListener(d); - fireChanged(); - } - - - public ColumnRow update() { - return cr; - } - - /** - * 添加一个listener到listenerList中 - * @param l 监听 - */ - public void addChangeListener(ChangeListener l) { - this.listenerList.add(ChangeListener.class, l); - } - - /** - * 从listenerList中移除一个listener - * @param l 监听 - */ - public void removeChangeListener(ChangeListener l) { - this.listenerList.remove(ChangeListener.class, l); - } - - // august: Process the listeners last to first - protected void fireChanged() { - Object[] listeners = listenerList.getListenerList(); - - for (int i = listeners.length - 2; i >= 0; i -= 2) { - if (listeners[i] == ChangeListener.class) { - ((ChangeListener) listeners[i + 1]).stateChanged(new ChangeEvent(this)); - } - } - } - - /** - * 给组件登记一个观察者监听事件 - * @param listener 监听 - */ - public void registerChangeListener(UIObserverListener listener) { - uiObserverListener = listener; - } - - /** - * 组件是否需要响应添加的观察者事件 - * @return 如果需要响应观察者事件则返回true,否则返回false - */ - public boolean shouldResponseChangeListener() { - return true; - } + private static final long serialVersionUID = 1L; + private static String[] columnarray = new String[1000]; + private static String[] rowarray = new String[5000]; + + + protected UpperCaseSpinner columnSpinner; + protected UIBasicSpinner rowSpinner; + + static { + for (int i = 1; i <= 1000; i++) { + columnarray[i - 1] = StableUtils.convertIntToABC(i); + } + for (int i = 1; i <= 5000; i++) { + rowarray[i - 1] = StringUtils.EMPTY + i; + } + } + + protected DocumentListener d = new DocumentListener() { + + + @Override + public void removeUpdate(DocumentEvent e) { + String rolText = ((DefaultEditor) columnSpinner.getEditor()).getTextField().getText(); + String rowText = ((DefaultEditor) rowSpinner.getEditor()).getTextField().getText(); + if (rolText == null || rolText.length() == 0 || rowText == null || rowText.length() == 0) { + return; + } + int col = StableUtils.convertABCToInt(rolText) - 1; + int row = Integer.parseInt(rowText) - 1; + setColumnRow(ColumnRow.valueOf(col, row)); + } + + @Override + public void insertUpdate(DocumentEvent e) { + int col = StableUtils.convertABCToInt(((DefaultEditor) columnSpinner.getEditor()).getTextField().getText()) - 1; + int row = Integer.parseInt(((DefaultEditor) rowSpinner.getEditor()).getTextField().getText()) - 1; + setColumnRow(ColumnRow.valueOf(col, row)); + } + + @Override + public void changedUpdate(DocumentEvent e) { + + } + }; + + + private UIObserverListener uiObserverListener; + private ColumnRow cr; + + + public ColumnRowPane() { + this.initComponents(); + iniListener(); + } + + + /** + * 初始化元素 + */ + public void initComponents() { + this.setLayout(new GridLayout(0, 2, IntervalConstants.INTERVAL_L6, 0)); + initColSpinner(); + this.add(columnSpinner, BorderLayout.WEST); + initRowSpinner(); + this.add(rowSpinner); + this.addDocumentListener(d); + } + + private void iniListener() { + if (shouldResponseChangeListener()) { + this.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + if (uiObserverListener == null) { + return; + } + uiObserverListener.doChange(); + } + }); + } + } + + + protected void initRowSpinner() { + rowSpinner = new ColumnRowSpinner((new SpinnerListModel(rowarray))) { + public boolean shouldResponseChangeListener() { + return false; + } + + }; + rowSpinner.setPreferredSize(new Dimension(60, 24)); + JFormattedTextField rftf = GUICoreUtils.getSpinnerTextField(rowSpinner); + if (rftf != null) { + rftf.setColumns(4); // specify more width than we need + rftf.setHorizontalAlignment(UITextField.LEFT); + } + } + + protected void initColSpinner() { + SpinnerListModel columnSpinnerListModel = new SpinnerListModel(columnarray); + columnSpinner = new UpperCaseSpinner(columnSpinnerListModel) { + public boolean shouldResponseChangeListener() { + return false; + } + }; + columnSpinner.setPreferredSize(new Dimension(60, 24)); + JFormattedTextField cftf = GUICoreUtils.getSpinnerTextField(columnSpinner); + if (cftf != null) { + cftf.setColumns(3); // specify more width than we need + cftf.setHorizontalAlignment(UITextField.LEFT); + } + + ((AbstractDocument) cftf.getDocument()).setDocumentFilter(new DocumentFilter() { + public void insertString(FilterBypass fb, int offset, String string, AttributeSet attr) throws BadLocationException { + fb.insertString(offset, string.toUpperCase(), attr); + } + + public void replace(FilterBypass fb, int offset, int length, String string, AttributeSet attr) throws BadLocationException { + if (string != null) { + string = string.toUpperCase(); + } + fb.replace(offset, length, string, attr); + } + }); + } + + protected void addDocumentListener(DocumentListener l) { + ((DefaultEditor) columnSpinner.getEditor()).getTextField().getDocument().addDocumentListener(l); + ((DefaultEditor) rowSpinner.getEditor()).getTextField().getDocument().addDocumentListener(l); + } + + private void removeDocumentListener(DocumentListener l) { + ((DefaultEditor) columnSpinner.getEditor()).getTextField().getDocument().removeDocumentListener(l); + ((DefaultEditor) rowSpinner.getEditor()).getTextField().getDocument().removeDocumentListener(l); + } + + /** + * columnSpinner与rowSpinner应该整体考虑,设置ColumnRow应该只触发一次事件 + * + * @param columnRow + */ + public void setColumnRow(ColumnRow columnRow) { + if (!ComparatorUtils.equals(cr, columnRow)) { + setGlobalName(); + removeDocumentListener(d); + cr = columnRow; + addDocumentListener(d); + fireChanged(); + } + } + + public void setGlobalName() { + + } + + public void populate(ColumnRow columnRow) { + cr = columnRow; + int column = columnRow.getColumn(); + if (column < 0) { + column = 0; + } + removeDocumentListener(d); + columnSpinner.setValue(StableUtils.convertIntToABC(column + 1)); + int row = columnRow.getRow(); + // shoc 小于0就蹦了 + if (row < 0) { + row = 0; + } + rowSpinner.setValue("" + (row + 1)); + addDocumentListener(d); + fireChanged(); + } + + + public ColumnRow update() { + return cr; + } + + /** + * 添加一个listener到listenerList中 + * + * @param l 监听 + */ + public void addChangeListener(ChangeListener l) { + this.listenerList.add(ChangeListener.class, l); + } + + /** + * 从listenerList中移除一个listener + * + * @param l 监听 + */ + public void removeChangeListener(ChangeListener l) { + this.listenerList.remove(ChangeListener.class, l); + } + + // august: Process the listeners last to first + protected void fireChanged() { + Object[] listeners = listenerList.getListenerList(); + + for (int i = listeners.length - 2; i >= 0; i -= 2) { + if (listeners[i] == ChangeListener.class) { + ((ChangeListener) listeners[i + 1]).stateChanged(new ChangeEvent(this)); + } + } + } + + /** + * 给组件登记一个观察者监听事件 + * + * @param listener 监听 + */ + public void registerChangeListener(UIObserverListener listener) { + uiObserverListener = listener; + } + + /** + * 组件是否需要响应添加的观察者事件 + * + * @return 如果需要响应观察者事件则返回true,否则返回false + */ + public boolean shouldResponseChangeListener() { + return true; + } } \ No newline at end of file diff --git a/designer-realize/src/main/java/com/fr/design/javascript/ListenerEditPane.java b/designer-realize/src/main/java/com/fr/design/javascript/ListenerEditPane.java index 196da69c4..91ccd3802 100644 --- a/designer-realize/src/main/java/com/fr/design/javascript/ListenerEditPane.java +++ b/designer-realize/src/main/java/com/fr/design/javascript/ListenerEditPane.java @@ -7,6 +7,7 @@ import com.fr.design.fun.JavaScriptActionProvider; import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.itextfield.UITextField; +import com.fr.design.i18n.Toolkit; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.mainframe.JTemplate; @@ -28,140 +29,143 @@ import java.util.List; import java.util.Set; public class ListenerEditPane extends BasicBeanPane { - private UITextField nameText; - private UIComboBox styleBox; - private CardLayout card; - private List> cards; - private JPanel hyperlinkPane; - - private JavaScriptImplPane javaScriptPane; - private FormSubmitJavaScriptPane formSubmitScriptPane; - private Commit2DBJavaScriptPane commit2DBJavaScriptPane; - // 自定义事件 - private CustomActionPane customActionPane; - // 发送邮件 - private EmailPane emailPane; - - private static final String JS = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_JavaScript"); - private static final String FORMSUBMIT = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_JavaScript_Form_Submit"); - private static final String DBCOMMIT = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_JavaScript_Commit_To_Database"); - private static final String CUSTOMACTION= com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_JavaScript_Custom_Submit"); - private static final String EMAIL = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Email_Sent_Email"); - - private Listener listener; - - public ListenerEditPane() { - this.initComponents(new String[0]); - } + private UITextField nameText; + private UIComboBox styleBox; + private CardLayout card; + private List> cards; + private JPanel hyperlinkPane; - public ListenerEditPane(String[] defaultArgs) { - this.initComponents(defaultArgs); - } + private static final String JS = Toolkit.i18nText("Fine-Design_Report_JavaScript"); + private static final String DBCOMMIT = Toolkit.i18nText("Fine-Design_Basic_JavaScript_Commit_To_Database"); + private static final String CUSTOMACTION = Toolkit.i18nText("Fine-Design_Report_Submit_Type_Custom"); + private static final String EMAIL = Toolkit.i18nText("Fine-Design_Report_Email_Sent_Email"); - /** - * 初始化各个组件 - * @param defaultArgs 初始化参数 - */ - public void initComponents(String[] defaultArgs) { - cards = new ArrayList>(); - this.setLayout(FRGUIPaneFactory.createBorderLayout()); - JPanel namePane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); - nameText = new UITextField(8); - nameText.setEditable(false); - namePane.add(nameText, BorderLayout.WEST); - String[] style = {JS, DBCOMMIT, CUSTOMACTION,EMAIL}; - styleBox = new UIComboBox(style); - namePane.add(styleBox); - namePane = GUICoreUtils.createFlowPane(new Component[]{new UILabel(" " + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Event_Name") + ":"), nameText, new UILabel(" " + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Event_Type") + ":"), styleBox}, FlowLayout.LEFT); - namePane.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Event_Name_Type"))); - this.add(namePane, BorderLayout.NORTH); - card = new CardLayout(); - hyperlinkPane = FRGUIPaneFactory.createCardLayout_S_Pane(); - hyperlinkPane.setLayout(card); - javaScriptPane = new JavaScriptImplPane(defaultArgs); - hyperlinkPane.add(JS, javaScriptPane); - // 提交入库 - List dbmaniList = new ArrayList(); - dbmaniList.add(autoCreateDBManipulationPane()); - commit2DBJavaScriptPane = new Commit2DBJavaScriptPane(JavaScriptActionPane.defaultJavaScriptActionPane, - dbmaniList); - hyperlinkPane.add(DBCOMMIT, commit2DBJavaScriptPane); - // 自定义事件 - customActionPane = new CustomActionPane(); - hyperlinkPane.add(CUSTOMACTION, customActionPane); - // 发送邮件 - emailPane = new EmailPane(); - hyperlinkPane.add(EMAIL,emailPane); - cards.add(javaScriptPane); - cards.add(commit2DBJavaScriptPane); - cards.add(customActionPane); - cards.add(emailPane); - //其他事件 - addOtherEvent(); - hyperlinkPane.setBorder(BorderFactory.createTitledBorder(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_JavaScript_Set"))); - this.add(hyperlinkPane); - styleBox.addItemListener(new ItemListener() { - public void itemStateChanged(ItemEvent e) { - card.show(hyperlinkPane, styleBox.getSelectedItem().toString()); - } - }); - } + private Listener listener; - private void addOtherEvent(){ - Set javaScriptActionProviders = ExtraDesignClassManager.getInstance().getArray(JavaScriptActionProvider.XML_TAG); - if (javaScriptActionProviders != null) { - for (JavaScriptActionProvider jsp : javaScriptActionProviders) { - FurtherBasicBeanPane pane = jsp.getJavaScriptActionPane(); - String title = pane.title4PopupWindow(); - styleBox.addItem(title); - hyperlinkPane.add(title, pane); - cards.add(pane); - } - } - } + public ListenerEditPane() { + this.initComponents(new String[0]); + } + + public ListenerEditPane(String[] defaultArgs) { + this.initComponents(defaultArgs); + } /** - * 根据有无单元格创建 DBManipulationPane - * @return 有单元格。有智能添加单元格等按钮,返回 SmartInsertDBManipulationPane + * 初始化各个组件 + * + * @param defaultArgs 初始化参数 */ - private DBManipulationPane autoCreateDBManipulationPane() { - JTemplate jTemplate = DesignerContext.getDesignerFrame().getSelectedJTemplate(); - return jTemplate.createDBManipulationPane(); - } - - @Override - protected String title4PopupWindow() { - return com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_Event_Set"); - } - - @Override - public void populateBean(Listener listener) { - this.listener = listener; - if (this.listener == null) { - this.listener = new Listener(); - } - this.nameText.setText(listener.getEventName()); - JavaScript js = listener.getAction(); - for (int i = 0; i < this.cards.size(); i++) { - FurtherBasicBeanPane pane = cards.get(i); - if (pane.accept(js)) { - styleBox.setSelectedItem(pane.title4PopupWindow()); - card.show(hyperlinkPane, pane.title4PopupWindow()); - pane.populateBean(js); - return; - } - } - } + public void initComponents(String[] defaultArgs) { + cards = new ArrayList<>(); + this.setLayout(FRGUIPaneFactory.createBorderLayout()); + JPanel namePane = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); + nameText = new UITextField(8); + nameText.setEditable(false); + namePane.add(nameText, BorderLayout.WEST); + final String[] style = {JS, DBCOMMIT, CUSTOMACTION, EMAIL}; + styleBox = new UIComboBox(style); + namePane.add(styleBox); + namePane = GUICoreUtils.createFlowPane(new Component[]{ + new UILabel(" " + Toolkit.i18nText("Fine-Design_Report_Event_Name") + ":"), + nameText, + new UILabel(" " + Toolkit.i18nText("Fine-Design_Report_Event_Type") + ":"), + styleBox}, + FlowLayout.LEFT); + namePane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Report_Event_Name_Type"))); + this.add(namePane, BorderLayout.NORTH); + card = new CardLayout(); + hyperlinkPane = FRGUIPaneFactory.createCardLayout_S_Pane(); + hyperlinkPane.setLayout(card); + JavaScriptImplPane javaScriptPane = new JavaScriptImplPane(defaultArgs); + hyperlinkPane.add(JS, javaScriptPane); + // 提交入库 + List dbManiList = new ArrayList(); + dbManiList.add(autoCreateDBManipulationPane()); + Commit2DBJavaScriptPane commit2DBJavaScriptPane = new Commit2DBJavaScriptPane(JavaScriptActionPane.defaultJavaScriptActionPane, + dbManiList); + hyperlinkPane.add(DBCOMMIT, commit2DBJavaScriptPane); + // 自定义事件 + CustomActionPane customActionPane = new CustomActionPane(); + hyperlinkPane.add(CUSTOMACTION, customActionPane); + // 发送邮件 + EmailPane emailPane = new EmailPane(); + hyperlinkPane.add(EMAIL, emailPane); + cards.add(javaScriptPane); + cards.add(commit2DBJavaScriptPane); + cards.add(customActionPane); + cards.add(emailPane); + //其他事件 + addOtherEvent(); + hyperlinkPane.setBorder(BorderFactory.createTitledBorder(Toolkit.i18nText("Fine-Design_Report_JavaScript_Set"))); + this.add(hyperlinkPane); + styleBox.addItemListener(new ItemListener() { + @Override + public void itemStateChanged(ItemEvent e) { + Object selected = styleBox.getSelectedItem(); + if (selected == null) { + return; + } + card.show(hyperlinkPane, selected.toString()); + } + }); + } + + private void addOtherEvent() { + Set javaScriptActionProviders = ExtraDesignClassManager.getInstance().getArray(JavaScriptActionProvider.XML_TAG); + if (javaScriptActionProviders != null) { + for (JavaScriptActionProvider jsp : javaScriptActionProviders) { + FurtherBasicBeanPane pane = jsp.getJavaScriptActionPane(); + String title = pane.title4PopupWindow(); + styleBox.addItem(title); + hyperlinkPane.add(title, pane); + cards.add(pane); + } + } + } + + /** + * 根据有无单元格创建 DBManipulationPane + * + * @return 有单元格。有智能添加单元格等按钮,返回 SmartInsertDBManipulationPane + */ + private DBManipulationPane autoCreateDBManipulationPane() { + JTemplate jTemplate = DesignerContext.getDesignerFrame().getSelectedJTemplate(); + return jTemplate.createDBManipulationPane(); + } + + @Override + protected String title4PopupWindow() { + return Toolkit.i18nText("Fine-Design_Report_Event_Set"); + } + + @Override + public void populateBean(Listener listener) { + this.listener = listener; + if (this.listener == null) { + this.listener = new Listener(); + } + this.nameText.setText(listener.getEventName()); + JavaScript js = listener.getAction(); + for (int i = 0; i < this.cards.size(); i++) { + FurtherBasicBeanPane pane = cards.get(i); + if (pane.accept(js)) { + styleBox.setSelectedItem(pane.title4PopupWindow()); + card.show(hyperlinkPane, pane.title4PopupWindow()); + pane.populateBean(js); + return; + } + } + } - public void checkValid() throws Exception{ - this.cards.get(this.styleBox.getSelectedIndex()).checkValid(); - } + public void checkValid() throws Exception { + this.cards.get(this.styleBox.getSelectedIndex()).checkValid(); + } - @Override - public Listener updateBean(){ - this.listener.setEventName(this.nameText.getText()); - FurtherBasicBeanPane pane = this.cards.get(this.styleBox.getSelectedIndex()); - this.listener.setAction(pane.updateBean()); - return this.listener; - } + @Override + public Listener updateBean() { + this.listener.setEventName(this.nameText.getText()); + FurtherBasicBeanPane pane = this.cards.get(this.styleBox.getSelectedIndex()); + this.listener.setAction(pane.updateBean()); + return this.listener; + } } \ No newline at end of file From ea49ba5f14dbd4c3afadf284b117b3a01db489b5 Mon Sep 17 00:00:00 2001 From: zheng Date: Tue, 25 Sep 2018 14:52:38 +0800 Subject: [PATCH 03/10] CHART-2848 linemap startareaname not areaname --- .../designer/other/VanChartMapHyperLinkPane.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/designer-chart/src/main/java/com/fr/van/chart/map/designer/other/VanChartMapHyperLinkPane.java b/designer-chart/src/main/java/com/fr/van/chart/map/designer/other/VanChartMapHyperLinkPane.java index 3c520d31f..272b0cec2 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/map/designer/other/VanChartMapHyperLinkPane.java +++ b/designer-chart/src/main/java/com/fr/van/chart/map/designer/other/VanChartMapHyperLinkPane.java @@ -1,7 +1,11 @@ package com.fr.van.chart.map.designer.other; +import com.fr.base.BaseFormula; +import com.fr.base.FormulaBuilder; import com.fr.chart.chartattr.Plot; import com.fr.design.dialog.BasicScrollPane; +import com.fr.extended.chart.HyperLinkPara; +import com.fr.extended.chart.HyperLinkParaHelper; import com.fr.js.NameJavaScriptGroup; import com.fr.plugin.chart.map.VanChartMapPlot; import com.fr.plugin.chart.type.MapType; @@ -11,6 +15,8 @@ import com.fr.van.chart.map.designer.VanMapAreaPointAndLineGroupPane; import javax.swing.BorderFactory; import javax.swing.JPanel; import java.awt.BorderLayout; +import java.util.LinkedHashMap; +import java.util.Map; /** * Created by hufan on 2016/12/20. @@ -193,6 +199,16 @@ public class VanChartMapHyperLinkPane extends BasicScrollPane { protected NameJavaScriptGroup populateHotHyperLink(Plot plot) { return ((VanChartMapPlot)plot).getLineHotHyperLink(); } + + @Override + protected Map getHyperLinkEditorMap() { + FormulaBuilder builder = BaseFormula.createFormulaBuilder(); + Map map = new LinkedHashMap<>(); + for (HyperLinkPara para : HyperLinkParaHelper.LINE_MAP) { + map.put(para.getName(), builder.build(para.getFormulaContent())); + } + return map; + } }; } From b224ba62795436f8c94dc972eb2c6286e16aea2e Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 25 Sep 2018 17:40:14 +0800 Subject: [PATCH 04/10] =?UTF-8?q?REPORT-11335=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E6=95=B0=E6=8D=AE=E5=BA=93=E4=BC=9A=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=8A=E4=B8=80=E4=B8=AA=E7=9A=84=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/data/datapane/connect/JDBCDefPane.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/connect/JDBCDefPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/connect/JDBCDefPane.java index d4905b645..81d52d4e6 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/connect/JDBCDefPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/connect/JDBCDefPane.java @@ -35,6 +35,7 @@ public class JDBCDefPane extends JPanel { public static final String DRIVER_TYPE = "driver_type"; public static final String USER_NAME = "user_name"; public static final int TIME_MULTIPLE = 1000; + private static final String EMPTY_DB = StringUtils.EMPTY; private static Map jdbcMap = new HashMap(); @@ -64,7 +65,7 @@ public class JDBCDefPane extends JPanel { private UITextField userNameTextField; private JPasswordField passwordTextField; // 请不要改动dbtype,只应该最后添加 - private final String[] dbtype = {"", "Oracle", "DB2", "SQL Server", "MySQL", "Sybase", "Access", "Derby", "Postgre","SQLite","Inceptor", "Others"}; + private final String[] dbtype = {EMPTY_DB, "Oracle", "DB2", "SQL Server", "MySQL", "Sybase", "Access", "Derby", "Postgre","SQLite","Inceptor", "Others"}; // carl:DBCP的一些属性 private IntegerEditor DBCP_INITIAL_SIZE = new IntegerEditor(); @@ -182,6 +183,9 @@ public class JDBCDefPane extends JPanel { break; } } + if (!out) { + this.dbtypeComboBox.setSelectedItem(EMPTY_DB); + } } this.driverComboBox.setSelectedItem(jdbcDatabase.getDriver()); this.urlTextField.setText(jdbcDatabase.getURL()); From ee37af303fa314ad6e36e3beeb01b2db48436f8c Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Wed, 26 Sep 2018 12:00:38 +0800 Subject: [PATCH 05/10] =?UTF-8?q?1.REPORT-11523=20@Sung:mac=E4=B8=8Balphaf?= =?UTF-8?q?ine=E6=89=93=E5=BC=80=E7=BD=91=E9=A1=B5=E8=B6=85=E9=93=BE?= =?UTF-8?q?=E6=9C=89=E9=97=AE=E9=A2=98=20---=E4=BF=AE=E5=A4=8D=E8=AF=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98=202.=E5=A2=9E=E5=BC=BA=E7=A8=8B=E5=BA=8F?= =?UTF-8?q?=E5=81=A5=E5=A3=AE=E6=80=A7=EF=BC=9B=E8=BF=94=E5=9B=9E=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E5=A2=9E=E5=8A=A0=E5=B0=8F=E6=89=8B=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=BC=BA=E4=BA=A4=E4=BA=92=E6=80=A7=203.=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E6=AC=A1=E8=A6=81=E7=A8=8B=E5=BA=A6=E7=9A=84?= =?UTF-8?q?log=E7=9A=84=E7=BA=A7=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/component/AlphaFineDialog.java | 17 ++++++++++------- .../alphafine/preview/RobotPreviewPane.java | 4 +++- .../manager/impl/ComplementAdviceManager.java | 12 ++++-------- .../manager/impl/RecommendSearchManager.java | 4 ++-- .../manager/impl/SimilarSearchManeger.java | 4 ++-- 5 files changed, 21 insertions(+), 20 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java index 5137d56f1..6b21b0b6a 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/component/AlphaFineDialog.java @@ -947,11 +947,13 @@ public class AlphaFineDialog extends UIDialog { Thread sendThread = new Thread(new Runnable() { @Override public void run() { - RecentSearchManager searchManager = RecentSearchManager.getInstance(); - searchManager.addModel(storeText, cellModel); - sendDataToServer(storeText, cellModel); - TemplateInfoCollector.getInstance().sendTemplateInfo(); - ErrorInfoUploader.getInstance().sendErrorInfo(); + if(StringUtils.isNotEmpty(storeText)){ + RecentSearchManager searchManager = RecentSearchManager.getInstance(); + searchManager.addModel(storeText, cellModel); + sendDataToServer(storeText, cellModel); + TemplateInfoCollector.getInstance().sendTemplateInfo(); + ErrorInfoUploader.getInstance().sendErrorInfo(); + } } }); sendThread.start(); @@ -1376,10 +1378,11 @@ public class AlphaFineDialog extends UIDialog { private void initBackPane() { backPane = new JPanel(new BorderLayout()); JLabel jLabel = new JLabel(" < " + com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Back")); - jLabel.setPreferredSize(new Dimension(680, 20)); + jLabel.setPreferredSize(new Dimension(80, 20)); jLabel.setFont(AlphaFineConstants.SMALL_FONT); jLabel.setForeground(AlphaFineConstants.DARK_GRAY); - backPane.add(jLabel, BorderLayout.CENTER); + jLabel.setCursor(new Cursor(Cursor.HAND_CURSOR)); + backPane.add(jLabel, BorderLayout.WEST); jLabel.addMouseListener(new MouseAdapter() { @Override diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java index 4582d186b..d7849d29c 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; +import java.net.URLEncoder; /** @@ -32,6 +33,7 @@ public class RobotPreviewPane extends JPanel { private static final int TITLE_AREA_HEIGHT = 15; private static final int HOT_TITLE_AREA_HEIGHT = 30; + private static final String STRING_ENCODER = "UTF-8"; public RobotPreviewPane(AlphaCellModel model, String content) { this.setLayout(new BorderLayout()); @@ -58,7 +60,7 @@ public class RobotPreviewPane extends JPanel { .replaceAll("\\('", StringUtils.EMPTY) .replaceAll("'\\)", StringUtils.EMPTY); try { - Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_PREVIEW + s)); + Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_PREVIEW + URLEncoder.encode(s, STRING_ENCODER))); } catch (IOException e1) { FineLoggerFactory.getLogger().error(e1.getMessage()); } catch (URISyntaxException e1) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java index 16182d5f1..0390f67da 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java @@ -3,18 +3,14 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; -import com.fr.design.mainframe.alphafine.cell.model.RobotModel; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.general.http.HttpToolbox; -import com.fr.json.JSONArray; import com.fr.json.JSONException; -import com.fr.json.JSONObject; -import com.fr.json.JSONUtils; import com.fr.log.FineLoggerFactory; -import com.fr.stable.StringUtils; -import java.io.IOException; import com.fr.third.org.apache.commons.codec.digest.DigestUtils; +import java.io.IOException; + /** * @author alex.sung created on 2018/7/23. @@ -52,9 +48,9 @@ public class ComplementAdviceManager { AlphaFineHelper.checkCancel(); allModelList = AlphaFineHelper.getModelListFromJSONArray(result,"keywords"); } catch(ClassCastException | JSONException e){ - FineLoggerFactory.getLogger().error("complement advice search error: " + e.getMessage()); + FineLoggerFactory.getLogger().debug("complement advice search error: " + e.getMessage()); } catch (IOException e1) { - FineLoggerFactory.getLogger().error("complement advice get result error: " + e1.getMessage()); + FineLoggerFactory.getLogger().debug("complement advice get result error: " + e1.getMessage()); } } if (searchResult.isEmpty()) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java index c97e621e3..9988b90dd 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java @@ -77,9 +77,9 @@ public class RecommendSearchManager implements AlphaFineSearchProvider { } } } catch (JSONException e) { - FineLoggerFactory.getLogger().error("recommend search error! :" + e.getMessage()); + FineLoggerFactory.getLogger().debug("recommend search error! :" + e.getMessage()); } catch (IOException e) { - FineLoggerFactory.getLogger().error("recommend search get result error! :" + e.getMessage()); + FineLoggerFactory.getLogger().debug("recommend search get result error! :" + e.getMessage()); } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java index 1bc641131..e361ec71a 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java @@ -56,9 +56,9 @@ public class SimilarSearchManeger implements AlphaFineSearchProvider { AlphaFineHelper.checkCancel(); allModelList = AlphaFineHelper.getModelListFromJSONArray(result,"title"); } catch (ClassCastException | JSONException e) { - FineLoggerFactory.getLogger().error("similar search error: " + e.getMessage()); + FineLoggerFactory.getLogger().debug("similar search error: " + e.getMessage()); } catch (IOException e) { - FineLoggerFactory.getLogger().error("similar search get result error: " + e.getMessage()); + FineLoggerFactory.getLogger().debug("similar search get result error: " + e.getMessage()); } } moreModelList.clear(); From 2c5649fedb6bd4dcd6fc6c89d96f8d9e0c865737 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Wed, 26 Sep 2018 12:57:07 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B4=A8=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/preview/RobotPreviewPane.java | 4 ++-- .../manager/impl/ComplementAdviceManager.java | 7 +------ .../manager/impl/RecommendSearchManager.java | 14 +++++--------- .../search/manager/impl/SimilarSearchManeger.java | 7 +------ 4 files changed, 9 insertions(+), 23 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java index d7849d29c..4da974bbf 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/preview/RobotPreviewPane.java @@ -7,6 +7,7 @@ import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.cell.model.AlphaCellModel; import com.fr.design.mainframe.alphafine.cell.model.RobotModel; import com.fr.log.FineLoggerFactory; +import com.fr.stable.EncodeConstants; import com.fr.stable.StringUtils; import javax.swing.BorderFactory; @@ -33,7 +34,6 @@ public class RobotPreviewPane extends JPanel { private static final int TITLE_AREA_HEIGHT = 15; private static final int HOT_TITLE_AREA_HEIGHT = 30; - private static final String STRING_ENCODER = "UTF-8"; public RobotPreviewPane(AlphaCellModel model, String content) { this.setLayout(new BorderLayout()); @@ -60,7 +60,7 @@ public class RobotPreviewPane extends JPanel { .replaceAll("\\('", StringUtils.EMPTY) .replaceAll("'\\)", StringUtils.EMPTY); try { - Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_PREVIEW + URLEncoder.encode(s, STRING_ENCODER))); + Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_PREVIEW + URLEncoder.encode(s, EncodeConstants.ENCODING_UTF_8))); } catch (IOException e1) { FineLoggerFactory.getLogger().error(e1.getMessage()); } catch (URISyntaxException e1) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java index 0390f67da..8dd88cdc2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java @@ -5,12 +5,9 @@ import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.general.http.HttpToolbox; -import com.fr.json.JSONException; import com.fr.log.FineLoggerFactory; import com.fr.third.org.apache.commons.codec.digest.DigestUtils; -import java.io.IOException; - /** * @author alex.sung created on 2018/7/23. @@ -47,10 +44,8 @@ public class ComplementAdviceManager { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); allModelList = AlphaFineHelper.getModelListFromJSONArray(result,"keywords"); - } catch(ClassCastException | JSONException e){ + } catch(Exception e){ FineLoggerFactory.getLogger().debug("complement advice search error: " + e.getMessage()); - } catch (IOException e1) { - FineLoggerFactory.getLogger().debug("complement advice get result error: " + e1.getMessage()); } } if (searchResult.isEmpty()) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java index 9988b90dd..13aa7ce7f 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java @@ -12,14 +12,12 @@ import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider; import com.fr.general.http.HttpToolbox; import com.fr.json.JSONArray; -import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.CodeUtils; import com.fr.stable.StringUtils; -import java.io.IOException; import java.util.Iterator; import java.util.List; @@ -54,7 +52,7 @@ public class RecommendSearchManager implements AlphaFineSearchProvider { return new SearchResult(); } SearchResult noConnectList = AlphaFineHelper.getNoConnectList(instance); - if(noConnectList != null){ + if (noConnectList != null) { return noConnectList; } for (int j = 0; j < searchText.length; j++) { @@ -76,9 +74,7 @@ public class RecommendSearchManager implements AlphaFineSearchProvider { } } } - } catch (JSONException e) { - FineLoggerFactory.getLogger().debug("recommend search error! :" + e.getMessage()); - } catch (IOException e) { + } catch (Exception e) { FineLoggerFactory.getLogger().debug("recommend search get result error! :" + e.getMessage()); } } @@ -113,7 +109,7 @@ public class RecommendSearchManager implements AlphaFineSearchProvider { /** * 将推荐接口获取的数据分别放入“显示部分”,“显示更多”的list */ - private void getRecommendSearchResult(){ + private void getRecommendSearchResult() { if (recommendModelList.size() > AlphaFineConstants.RECOMMEND_MAX_ITEM_NUM) { if (recommendModelList.size() > AlphaFineConstants.SHOW_SIZE) { modelList.add(0, new MoreModel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Recommend"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_ShowAll"), true, CellType.RECOMMEND)); @@ -131,7 +127,7 @@ public class RecommendSearchManager implements AlphaFineSearchProvider { /** * 将补全接口获取的数据分别放入“显示部分”,“显示更多”的list */ - private void getComplementAdviceSearchResult(){ + private void getComplementAdviceSearchResult() { if (complementAdviceModelList.size() > AlphaFineConstants.SHOW_SIZE) { modelList.add(0, new MoreModel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Recommend"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_ShowAll"), true, CellType.RECOMMEND)); modelList.addAll(complementAdviceModelList.subList(0, AlphaFineConstants.SHOW_SIZE)); @@ -145,7 +141,7 @@ public class RecommendSearchManager implements AlphaFineSearchProvider { /** * 将推荐接口和补全接口获取的数据分别放入“显示部分”,“显示更多”的list */ - private void getRecommendAndAdviceSearchResult(){ + private void getRecommendAndAdviceSearchResult() { if (recommendModelList.size() + complementAdviceModelList.size() > AlphaFineConstants.SHOW_SIZE) { modelList.add(0, new MoreModel(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_Recommend"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Report_AlphaFine_ShowAll"), true, CellType.RECOMMEND)); if (recommendModelList.size() > AlphaFineConstants.RECOMMEND_MAX_ITEM_NUM) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java index e361ec71a..f4e3d8f9b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java @@ -9,14 +9,11 @@ import com.fr.design.mainframe.alphafine.cell.model.RobotModel; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider; import com.fr.general.http.HttpToolbox; -import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; import com.fr.third.org.apache.commons.codec.digest.DigestUtils; -import java.io.IOException; - /** * Created by alex.sung on 2018/8/3. */ @@ -55,10 +52,8 @@ public class SimilarSearchManeger implements AlphaFineSearchProvider { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); allModelList = AlphaFineHelper.getModelListFromJSONArray(result,"title"); - } catch (ClassCastException | JSONException e) { + } catch (Exception e) { FineLoggerFactory.getLogger().debug("similar search error: " + e.getMessage()); - } catch (IOException e) { - FineLoggerFactory.getLogger().debug("similar search get result error: " + e.getMessage()); } } moreModelList.clear(); From 88db8fbe547d1a58b8eb6058a81d32b5c9f1f2b0 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Wed, 26 Sep 2018 15:39:17 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=89=93debug=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/manager/impl/ComplementAdviceManager.java | 7 ++++--- .../search/manager/impl/RecommendSearchManager.java | 2 +- .../search/manager/impl/SimilarSearchManeger.java | 8 ++++---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java index 8dd88cdc2..aa3690cb6 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/ComplementAdviceManager.java @@ -30,6 +30,7 @@ public class ComplementAdviceManager { /** * 从接口中获取补全建议结果 + * * @param searchText * @return */ @@ -43,9 +44,9 @@ public class ComplementAdviceManager { try { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); - allModelList = AlphaFineHelper.getModelListFromJSONArray(result,"keywords"); - } catch(Exception e){ - FineLoggerFactory.getLogger().debug("complement advice search error: " + e.getMessage()); + allModelList = AlphaFineHelper.getModelListFromJSONArray(result, "keywords"); + } catch (Exception e) { + FineLoggerFactory.getLogger().debug("complement advice search error. search str {}", searchText[j]); } } if (searchResult.isEmpty()) { diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java index 13aa7ce7f..b5f01f0b0 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecommendSearchManager.java @@ -75,7 +75,7 @@ public class RecommendSearchManager implements AlphaFineSearchProvider { } } } catch (Exception e) { - FineLoggerFactory.getLogger().debug("recommend search get result error! :" + e.getMessage()); + FineLoggerFactory.getLogger().debug("recommend search get result error! search str {}", searchText[j]); } } diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java index f4e3d8f9b..b1da3d72b 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/SimilarSearchManeger.java @@ -24,7 +24,7 @@ public class SimilarSearchManeger implements AlphaFineSearchProvider { public static SimilarSearchManeger getInstance() { if (instance == null) { - synchronized (SimilarSearchManeger.class){ + synchronized (SimilarSearchManeger.class) { if (instance == null) { instance = new SimilarSearchManeger(); } @@ -41,7 +41,7 @@ public class SimilarSearchManeger implements AlphaFineSearchProvider { return new SearchResult(); } SearchResult noConnectList = AlphaFineHelper.getNoConnectList(instance); - if(noConnectList != null){ + if (noConnectList != null) { return noConnectList; } SearchResult allModelList = new SearchResult(); @@ -51,9 +51,9 @@ public class SimilarSearchManeger implements AlphaFineSearchProvider { try { String result = HttpToolbox.get(url); AlphaFineHelper.checkCancel(); - allModelList = AlphaFineHelper.getModelListFromJSONArray(result,"title"); + allModelList = AlphaFineHelper.getModelListFromJSONArray(result, "title"); } catch (Exception e) { - FineLoggerFactory.getLogger().debug("similar search error: " + e.getMessage()); + FineLoggerFactory.getLogger().debug("similar search error.search str {}", searchText[j]); } } moreModelList.clear(); From c117c537f3411469b7501985b27f3374a8b8e856 Mon Sep 17 00:00:00 2001 From: "alex.sung" Date: Wed, 26 Sep 2018 19:48:29 +0800 Subject: [PATCH 08/10] =?UTF-8?q?REPORT-11523=20@Sung:mac=E4=B8=8Balphafin?= =?UTF-8?q?e=E6=89=93=E5=BC=80=E7=BD=91=E9=A1=B5=E8=B6=85=E9=93=BE?= =?UTF-8?q?=E6=9C=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/alphafine/cell/model/RobotModel.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java index 273b29fef..cb159745f 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/cell/model/RobotModel.java @@ -7,6 +7,7 @@ import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; import com.fr.stable.AssistUtils; +import com.fr.stable.EncodeConstants; import com.fr.stable.StringUtils; import org.apache.commons.codec.digest.DigestUtils; @@ -14,6 +15,7 @@ import java.awt.Desktop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.net.URLEncoder; /** * Created by alex.sung on 2018/8/3. @@ -85,7 +87,7 @@ public class RobotModel extends AlphaCellModel { @Override public void doAction() { try { - Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_PREVIEW + super.getName())); + Desktop.getDesktop().browse(new URI(AlphaFineConstants.ALPHA_PREVIEW + URLEncoder.encode(super.getName(), EncodeConstants.ENCODING_UTF_8))); } catch (IOException e) { FineLoggerFactory.getLogger().error(e.getMessage()); } catch (URISyntaxException e) { From 740ae4fb47100874febc9b8a568d7147b2db028e Mon Sep 17 00:00:00 2001 From: zheng Date: Thu, 27 Sep 2018 15:26:30 +0800 Subject: [PATCH 09/10] =?UTF-8?q?CHART-3073=20=E5=AD=97=E6=AE=B5=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E6=A1=86=E5=8C=85=E5=90=AB=E6=97=A0=E8=BF=99=E4=B8=AA?= =?UTF-8?q?=E9=80=89=E9=A1=B9=20&&=20CHART-3060=20=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E6=97=A0=E5=92=8C=E8=8B=B1=E6=96=87none?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/icombobox/UIComboBox.java | 16 +++++++ .../chart/gui/data/table/DataPaneHelper.java | 12 +---- .../AbstractExtendedChartTableDataPane.java | 23 +++++----- .../ExtendedCustomFieldComboBoxPane.java | 32 +++++--------- .../fr/extended/chart/UIComboBoxWithNone.java | 44 +++++++++++++++++++ 5 files changed, 82 insertions(+), 45 deletions(-) create mode 100644 designer-chart/src/main/java/com/fr/extended/chart/UIComboBoxWithNone.java diff --git a/designer-base/src/main/java/com/fr/design/gui/icombobox/UIComboBox.java b/designer-base/src/main/java/com/fr/design/gui/icombobox/UIComboBox.java index 14a90da7b..e6130ca3d 100644 --- a/designer-base/src/main/java/com/fr/design/gui/icombobox/UIComboBox.java +++ b/designer-base/src/main/java/com/fr/design/gui/icombobox/UIComboBox.java @@ -15,6 +15,7 @@ import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; +import java.util.List; import java.util.Vector; /** @@ -131,6 +132,21 @@ public class UIComboBox extends JComboBox implements UIObserver, GlobalNameObser return new Dimension(super.getPreferredSize().width + SIZE5, SIZE); } + public void refreshBoxItems(List list) { + Object ob = getSelectedItem(); + + removeAllItems(); + for (Object o : list) { + addItem(o); + } + + getModel().setSelectedItem(ob); + } + + public void clearBoxItems() { + removeAllItems(); + } + /** * 鼠标进入事件 */ diff --git a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/DataPaneHelper.java b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/DataPaneHelper.java index 3fb9d6a63..69cf88286 100644 --- a/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/DataPaneHelper.java +++ b/designer-chart/src/main/java/com/fr/design/mainframe/chart/gui/data/table/DataPaneHelper.java @@ -21,15 +21,7 @@ public class DataPaneHelper { return; } - Object ob = box.getSelectedItem(); - box.removeAllItems(); - - int length = list.size(); - for (int i = 0; i < length; i++) { - box.addItem(list.get(i)); - } - - box.getModel().setSelectedItem(ob); + box.refreshBoxItems(list); } /** @@ -39,7 +31,7 @@ public class DataPaneHelper { */ public static void clearBoxItems(UIComboBox box) { if (box != null) { - box.removeAllItems(); + box.clearBoxItems(); } } diff --git a/designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartTableDataPane.java b/designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartTableDataPane.java index 0ac454634..e0bf8de70 100644 --- a/designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartTableDataPane.java +++ b/designer-chart/src/main/java/com/fr/extended/chart/AbstractExtendedChartTableDataPane.java @@ -10,13 +10,14 @@ import com.fr.design.layout.TableLayoutHelper; import com.fr.design.mainframe.chart.gui.data.CalculateComboBox; import com.fr.design.mainframe.chart.gui.data.table.AbstractTableDataContentPane; import com.fr.general.GeneralUtils; + +import javax.swing.BorderFactory; +import javax.swing.JPanel; +import javax.swing.SwingConstants; import java.awt.BorderLayout; import java.awt.Component; import java.util.Arrays; import java.util.List; -import javax.swing.BorderFactory; -import javax.swing.JPanel; -import javax.swing.SwingConstants; /** * Created by shine on 2018/3/2. @@ -52,8 +53,8 @@ public abstract class AbstractExtendedChartTableDataPane fieldList = new ArrayList(); - public ExtendedCustomFieldComboBoxPane(boolean hasNoneItem) { - this.hasNoneItem = hasNoneItem; - } - @Override protected void initLayout() { this.setLayout(new BorderLayout(0, 6)); @@ -76,6 +70,10 @@ public class ExtendedCustomFieldComboBoxPane extends UIComboBoxPane Date: Thu, 27 Sep 2018 16:34:50 +0800 Subject: [PATCH 10/10] =?UTF-8?q?REPORT-11586=20=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E7=8E=AF=E5=A2=83=E8=B6=85=E9=93=BE=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E5=B1=95=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/HyperlinkFilterHelper.java | 59 ------------- .../gui/controlpane/NameableCreator.java | 38 ++++----- .../shortcutfactory/OldShortCutFactory.java | 6 +- .../shortcutfactory/ShortCutFactory.java | 25 +++--- .../design/gui/frpane/BaseHyperlinkGroup.java | 33 ++++++-- .../gui/frpane/HyperLinkGroupFilter.java | 22 +++++ .../design/gui/frpane/HyperlinkGroupType.java | 19 +++-- .../gui/frpane/UICorrelationComboBoxPane.java | 39 ++++++--- .../fr/design/module/ChartHyperlinkGroup.java | 83 ++++++++++++++++++- .../fr/design/module/FormHyperlinkGroup.java | 8 +- .../component/VanChartShortCutFactory.java | 22 +---- 11 files changed, 208 insertions(+), 146 deletions(-) delete mode 100644 designer-base/src/main/java/com/fr/design/gui/HyperlinkFilterHelper.java create mode 100644 designer-base/src/main/java/com/fr/design/gui/frpane/HyperLinkGroupFilter.java diff --git a/designer-base/src/main/java/com/fr/design/gui/HyperlinkFilterHelper.java b/designer-base/src/main/java/com/fr/design/gui/HyperlinkFilterHelper.java deleted file mode 100644 index bc2cbdbf9..000000000 --- a/designer-base/src/main/java/com/fr/design/gui/HyperlinkFilterHelper.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.fr.design.gui; - -import com.fr.design.file.HistoryTemplateListPane; -import com.fr.design.mainframe.BaseJForm; -import com.fr.design.mainframe.JTemplate; -import com.fr.general.ComparatorUtils; - - -/** - * Created by mengao on 2017/9/22. - * 单元格超链、图表超链在不同类型模版中,下拉选项不同 - */ -public class HyperlinkFilterHelper { - - public static boolean whetherAddHyperlink4cell(String itemName) { - JTemplate jTemplate = getCurrentEditingTemplate(); - if (jTemplate == null) { - return false; - } - //先屏蔽掉这个,之后还有别的 - String[] names = {com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_ Hyperlink_Chart_Float")}; - for (String name : names) { - if (!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, name)) { - return false; - } - } - return whetherAddFormLink(jTemplate, itemName); - } - - public static boolean whetherAddHyperlink4Chart(String itemName) { - JTemplate jTemplate = getCurrentEditingTemplate(); - if (jTemplate == null) { - return false; - } - //先屏蔽掉这个,之后还有别的 - String[] names = {com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_ Hyperlink_Chart_Float"), com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Hyperlink_Chart_Cell")}; - for (String name : names) { - if (!jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, name)) { - if (jTemplate.getEditingReportIndex() == BaseJForm.ELEMENTCASE_TAB && ComparatorUtils.equals(itemName, names[0])) { - //表单报表块中图表悬浮元素超链,只屏蔽联动悬浮元素 - return false; - } else if (jTemplate.getEditingReportIndex() == BaseJForm.FORM_TAB) { - //表单图表超链屏蔽掉联动悬浮元素和联动单元格 - return false; - } - } - } - return whetherAddFormLink(jTemplate, itemName); - } - - private static JTemplate getCurrentEditingTemplate() { - return HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - } - - private static boolean whetherAddFormLink(JTemplate jTemplate, String itemName) { - String formName = com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Hyperlink_Form_Link"); - return !(jTemplate.isJWorkBook() && ComparatorUtils.equals(itemName, formName)); - } -} diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/NameableCreator.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/NameableCreator.java index e667675ec..97fadec00 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/NameableCreator.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/NameableCreator.java @@ -5,25 +5,25 @@ import com.fr.design.gui.ilist.ListModelElement; import com.fr.js.JavaScript; import com.fr.stable.Nameable; -import javax.swing.*; +import javax.swing.Icon; public interface NameableCreator { - public String menuName(); - - public Icon menuIcon(); - - public String createTooltip(); - - public Nameable createNameable(UnrepeatedNameHelper helper); - - public Class getUpdatePane(); - - public Object acceptObject2Populate(Object ob); - - public void saveUpdatedBean(ListModelElement wrapper, Object bean); - - public Class getHyperlink(); - - - public boolean isNeedParameterWhenPopulateJControlPane(); + String menuName(); + + Icon menuIcon(); + + String createTooltip(); + + Nameable createNameable(UnrepeatedNameHelper helper); + + Class getUpdatePane(); + + Object acceptObject2Populate(Object ob); + + void saveUpdatedBean(ListModelElement wrapper, Object bean); + + Class getHyperlink(); + + + boolean isNeedParameterWhenPopulateJControlPane(); } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/OldShortCutFactory.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/OldShortCutFactory.java index a7608e2bd..9ea8bb8fc 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/OldShortCutFactory.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/OldShortCutFactory.java @@ -2,13 +2,14 @@ package com.fr.design.gui.controlpane.shortcutfactory; import com.fr.base.BaseUtils; import com.fr.design.actions.UpdateAction; -import com.fr.design.gui.HyperlinkFilterHelper; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ShortCut4JControlPane; import com.fr.design.gui.controlpane.ShortCutListenerProvider; +import com.fr.design.gui.frpane.HyperLinkGroupFilter; import com.fr.design.menu.LineSeparator; import com.fr.design.menu.MenuDef; import com.fr.design.menu.ShortCut; +import com.fr.design.module.DesignModuleFactory; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; @@ -83,7 +84,8 @@ public class OldShortCutFactory extends AbstractShortCutFactory { private void wrapActionListener(NameableCreator[] creators) { for (final NameableCreator creator : creators) { - if (!HyperlinkFilterHelper.whetherAddHyperlink4cell(creator.menuName())) { + HyperLinkGroupFilter filter = DesignModuleFactory.getHyperlinkGroupType().getFilter(); + if (!filter.filter(creator.getHyperlink())) { continue; } boolean isTrue = ComparatorUtils.equals(creator.menuName(), Inter.getLocText("Datasource-Stored_Procedure")) || diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/ShortCutFactory.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/ShortCutFactory.java index b561c28ba..a09d859f6 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/ShortCutFactory.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/shortcutfactory/ShortCutFactory.java @@ -3,14 +3,15 @@ package com.fr.design.gui.controlpane.shortcutfactory; import com.fr.base.BaseUtils; import com.fr.design.actions.UpdateAction; import com.fr.design.actions.core.ActionFactory; -import com.fr.design.gui.HyperlinkFilterHelper; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.ShortCut4JControlPane; import com.fr.design.gui.controlpane.ShortCutListenerProvider; +import com.fr.design.gui.frpane.HyperLinkGroupFilter; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.menu.LineSeparator; import com.fr.design.menu.MenuDef; import com.fr.design.menu.ShortCut; +import com.fr.design.module.DesignModuleFactory; import com.fr.general.ComparatorUtils; import com.fr.stable.StringUtils; @@ -36,11 +37,11 @@ public class ShortCutFactory extends AbstractShortCutFactory { @Override public ShortCut4JControlPane[] createShortCuts() { return new ShortCut4JControlPane[]{ - copyItemShortCut(), - moveUpItemShortCut(), - moveDownItemShortCut(), - sortItemShortCut(), - removeItemShortCut() + copyItemShortCut(), + moveUpItemShortCut(), + moveDownItemShortCut(), + sortItemShortCut(), + removeItemShortCut() }; } @@ -77,7 +78,7 @@ public class ShortCutFactory extends AbstractShortCutFactory { Object object = this.getValue(UIButton.class.getName()); if (!(object instanceof AbstractButton)) { // 直接使用默认UI - UIButton button = new UIButton(); + UIButton button = new UIButton(); // 添加一个名字作为自动化测试用 button.setName(getName()); @@ -124,7 +125,8 @@ public class ShortCutFactory extends AbstractShortCutFactory { /** * 生成UIButton - * @return 菜单按钮 + * + * @return 菜单按钮 */ public UIButton createUIButton() { createdButton = super.createUIButton(); @@ -139,7 +141,8 @@ public class ShortCutFactory extends AbstractShortCutFactory { private void wrapActionListener(NameableCreator[] creators) { for (final NameableCreator creator : creators) { - if (!whetherAdd(creator.menuName())) { + HyperLinkGroupFilter filter = DesignModuleFactory.getHyperlinkGroupType().getFilter(); + if (!filter.filter(creator.getHyperlink())) { continue; } boolean isTrue = ComparatorUtils.equals(creator.menuName(), com.fr.design.i18n.Toolkit.i18nText("Datasource-Stored_Procedure")) || @@ -163,9 +166,5 @@ public class ShortCutFactory extends AbstractShortCutFactory { }); } } - - protected boolean whetherAdd(String itemName){ - return HyperlinkFilterHelper.whetherAddHyperlink4cell(itemName); - } } } diff --git a/designer-base/src/main/java/com/fr/design/gui/frpane/BaseHyperlinkGroup.java b/designer-base/src/main/java/com/fr/design/gui/frpane/BaseHyperlinkGroup.java index fbc9678d5..f971e9ae2 100644 --- a/designer-base/src/main/java/com/fr/design/gui/frpane/BaseHyperlinkGroup.java +++ b/designer-base/src/main/java/com/fr/design/gui/frpane/BaseHyperlinkGroup.java @@ -2,6 +2,7 @@ package com.fr.design.gui.frpane; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.module.DesignModuleFactory; +import com.fr.js.JavaScript; /** * 基础的超级链接类型, 不包括图表相关超链. @@ -11,13 +12,29 @@ import com.fr.design.module.DesignModuleFactory; */ public class BaseHyperlinkGroup implements HyperlinkGroupType { - /** - * 返回支持的超级链接类型 - * - * @return - */ - public NameableCreator[] getHyperlinkCreators() { - return DesignModuleFactory.getCreators4Hyperlink(); - } + /** + * 返回支持的超级链接类型 + * + * @return NameableCreator[] + */ + public NameableCreator[] getHyperlinkCreators() { + return DesignModuleFactory.getCreators4Hyperlink(); + } + + @Override + public HyperLinkGroupFilter getFilter() { + return new HyperLinkGroupFilter() { + @Override + public boolean filter(Class clazz) { + return true; + } + + @Override + public boolean filter(Object object) { + return true; + } + }; + } + } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/gui/frpane/HyperLinkGroupFilter.java b/designer-base/src/main/java/com/fr/design/gui/frpane/HyperLinkGroupFilter.java new file mode 100644 index 000000000..cb4096574 --- /dev/null +++ b/designer-base/src/main/java/com/fr/design/gui/frpane/HyperLinkGroupFilter.java @@ -0,0 +1,22 @@ +package com.fr.design.gui.frpane; + +import com.fr.js.JavaScript; + +public interface HyperLinkGroupFilter { + + /** + * @param clazz clazz + * @return 是否可用,返回true表示可用,返回false表示不可用 + */ + boolean filter(Class clazz); + + /** + * 兼容老图表 + * + * @param object object + * @return 是否可用,返回true表示可用,返回false表示不可用 + * @see HyperLinkGroupFilter#filter(Class) + */ + boolean filter(Object object); + +} diff --git a/designer-base/src/main/java/com/fr/design/gui/frpane/HyperlinkGroupType.java b/designer-base/src/main/java/com/fr/design/gui/frpane/HyperlinkGroupType.java index 37a64a290..48b5c1282 100644 --- a/designer-base/src/main/java/com/fr/design/gui/frpane/HyperlinkGroupType.java +++ b/designer-base/src/main/java/com/fr/design/gui/frpane/HyperlinkGroupType.java @@ -3,16 +3,21 @@ package com.fr.design.gui.frpane; import com.fr.design.gui.controlpane.NameableCreator; /** - * 超级链接 支持的类型 种类. + * 超级链接 支持的类型 种类. + * * @author kunsnat E-mail:kunsnat@gmail.com * @version 创建时间:2013-6-26 下午04:41:55 */ public interface HyperlinkGroupType { - - /** - * 返回支持的超级链接类型 - * @return NameableCreator[] - */ - public NameableCreator[] getHyperlinkCreators(); + + /** + * 返回支持的超级链接类型 + * + * @return NameableCreator[] + */ + NameableCreator[] getHyperlinkCreators(); + + + HyperLinkGroupFilter getFilter(); } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java b/designer-base/src/main/java/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java index a1f92ddd0..5bf504444 100644 --- a/designer-base/src/main/java/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/frpane/UICorrelationComboBoxPane.java @@ -8,7 +8,6 @@ import com.fr.design.dialog.DialogActionListener; import com.fr.design.dialog.UIDialog; import com.fr.design.event.UIObserver; import com.fr.design.event.UIObserverListener; -import com.fr.design.gui.HyperlinkFilterHelper; import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.imenu.UIMenuItem; import com.fr.design.gui.imenutable.UIMenuNameableCreator; @@ -16,9 +15,9 @@ import com.fr.design.gui.imenutable.UIMenuTable; import com.fr.design.hyperlink.ReportletHyperlinkPane; import com.fr.design.hyperlink.WebHyperlinkPane; import com.fr.design.javascript.EmailPane; +import com.fr.design.module.DesignModuleFactory; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; - import com.fr.js.AbstractJavaScript; import com.fr.js.EmailJavaScript; import com.fr.js.ReportletHyperlink; @@ -26,10 +25,17 @@ import com.fr.js.WebHyperlink; import com.fr.stable.ArrayUtils; import com.fr.stable.StringUtils; -import javax.swing.*; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; +import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -import java.awt.*; +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.LayoutManager; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; @@ -76,6 +82,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 刷新下拉列表和按钮 + * * @param values 下拉列表里的值 */ public void refreshMenuAndAddMenuAction(List values) { @@ -88,7 +95,8 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { if (values.size() > 1) { for (UIMenuNameableCreator value : values) { final String itemName = value.getName(); - if(!HyperlinkFilterHelper.whetherAddHyperlink4Chart(itemName)){ + HyperLinkGroupFilter filter = DesignModuleFactory.getHyperlinkGroupType().getFilter(); + if (!filter.filter(value.getObj())) { continue; } UIMenuItem item = new UIMenuItem(itemName); @@ -238,6 +246,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 增加布局 + * * @param name 名字 * @param comp 组件 */ @@ -247,6 +256,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 删除组件 + * * @param comp 组件 */ public void removeLayoutComponent(Component comp) { @@ -255,6 +265,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 获得组件的大小 + * * @param parent 上层容器 * @return 组件的大小 */ @@ -265,6 +276,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 最小的布局大小 + * * @param parent 上层容器 * @return 最小的大小 */ @@ -274,6 +286,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 布局容器 + * * @param parent 上层容器 */ public void layoutContainer(Container parent) { @@ -287,6 +300,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 增加监听事件 + * * @param l 监听的对象 */ public void addChangeListener(ChangeListener l) { @@ -296,6 +310,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 删除监听事件 + * * @param l 需要删除的事件 */ public void removeChangeListener(ChangeListener l) { @@ -337,6 +352,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 更新并且重载 当前列表的值 + * * @param list 更新的列表 */ public void populateBean(List list) { @@ -353,14 +369,14 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 重置每个条目的名字 */ - public void resetItemName(){ - for(int i = 0; i < tablePane.getRowCount(); i++){ + public void resetItemName() { + for (int i = 0; i < tablePane.getRowCount(); i++) { UIMenuNameableCreator line = tablePane.getLine(i); Object obj = line.getObj(); - if(obj instanceof AbstractJavaScript){ - AbstractJavaScript script = (AbstractJavaScript)obj; + if (obj instanceof AbstractJavaScript) { + AbstractJavaScript script = (AbstractJavaScript) obj; String itemName = script.getItemName(); - if(!StringUtils.isBlank(itemName)){ + if (!StringUtils.isBlank(itemName)) { line.setName(itemName); } } @@ -369,6 +385,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 测试例子界面 + * * @param args 参数向量 */ public static void main(String... args) { @@ -397,6 +414,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 注册观察者监听事件 + * * @param listener 观察者监听事件 */ public void registerChangeListener(UIObserverListener listener) { @@ -406,6 +424,7 @@ public class UICorrelationComboBoxPane extends JPanel implements UIObserver { /** * 是否需要响应事件 + * * @return 需要相应 */ public boolean shouldResponseChangeListener() { diff --git a/designer-chart/src/main/java/com/fr/design/module/ChartHyperlinkGroup.java b/designer-chart/src/main/java/com/fr/design/module/ChartHyperlinkGroup.java index 583a669ef..33d15367d 100644 --- a/designer-chart/src/main/java/com/fr/design/module/ChartHyperlinkGroup.java +++ b/designer-chart/src/main/java/com/fr/design/module/ChartHyperlinkGroup.java @@ -7,11 +7,16 @@ import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperPoplinkPane; import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperRelateCellLinkPane; import com.fr.design.chart.series.SeriesCondition.impl.ChartHyperRelateFloatLinkPane; import com.fr.design.chart.series.SeriesCondition.impl.FormHyperlinkPane; +import com.fr.design.file.HistoryTemplateListCache; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.frpane.BaseHyperlinkGroup; - +import com.fr.design.gui.frpane.HyperLinkGroupFilter; +import com.fr.design.mainframe.BaseJForm; +import com.fr.design.mainframe.JTemplate; +import com.fr.general.ComparatorUtils; import com.fr.js.FormHyperlinkProvider; +import com.fr.js.JavaScript; import com.fr.stable.ArrayUtils; import com.fr.stable.bridge.StableFactory; @@ -31,12 +36,84 @@ public class ChartHyperlinkGroup extends BaseHyperlinkGroup { public NameableCreator[] getHyperlinkCreators() { FormHyperlinkProvider formHyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); - NameableCreator[] realted4CharthyperUse = { + NameableCreator[] related4ChartHyper = { new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Float_Chart"), ChartHyperPoplink.class, ChartHyperPoplinkPane.ChartNoRename.class), new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Cell"), ChartHyperRelateCellLink.class, ChartHyperRelateCellLinkPane.ChartNoRename.class), new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Float"), ChartHyperRelateFloatLink.class, ChartHyperRelateFloatLinkPane.ChartNoRename.class), new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Hyperlink_Form_Link"), formHyperlink.getClass(), FormHyperlinkPane.class)}; - return (NameableCreator[]) ArrayUtils.addAll(super.getHyperlinkCreators(), realted4CharthyperUse); + return ArrayUtils.addAll(super.getHyperlinkCreators(), related4ChartHyper); + + } + + @Override + public HyperLinkGroupFilter getFilter() { + return new HyperLinkGroupFilter() { + @Override + public boolean filter(Class clazz) { + JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + if (template == null) { + return false; + } + + if (template.isJWorkBook()) { + // 如果是普通报表单元格,那么没有 FormHyperlink 选项 + FormHyperlinkProvider formHyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); + //返回true表示可用,返回false表示不可用 + return !ComparatorUtils.equals(clazz, formHyperlink.getClass()); + + } else { + // 如果是决策报表 + Class[] classes = new Class[]{ChartHyperRelateCellLink.class, ChartHyperRelateFloatLink.class}; + for (Class aClass : classes) { + if (template.getEditingReportIndex() == BaseJForm.FORM_TAB) { + // 编辑的是决策报表中的图表,那么没有ChartHyperRelateFloatLink 和 ChartHyperRelateCellLink 选项,有FormHyperlink 选项 + if (ComparatorUtils.equals(aClass, clazz)) { + return false; + } + } else if (template.getEditingReportIndex() == BaseJForm.ELEMENTCASE_TAB) { + // 编辑的是决策报表中的报表块,那么没有 ChartHyperRelateFloatLink,有ChartHyperRelateCellLink 和 FormHyperlink 选项 + return !ComparatorUtils.equals(clazz, ChartHyperRelateFloatLink.class); + } + } + } + return true; + } + + /** + * 兼容老图表 + * @param object + * @return + */ + @Override + public boolean filter(Object object) { + JTemplate template = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); + if (template == null) { + return false; + } + + if (template.isJWorkBook()) { + // 如果是普通报表单元格,那么没有 FormHyperlink 选项 + FormHyperlinkProvider formHyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); + //返回true表示可用,返回false表示不可用 + return !ComparatorUtils.equals(object.getClass(), formHyperlink.getClass()); + } else { + // 如果是决策报表 + Class[] classes = new Class[]{ChartHyperRelateCellLink.class, ChartHyperRelateFloatLink.class}; + for (Class aClass : classes) { + if (template.getEditingReportIndex() == BaseJForm.FORM_TAB) { + // 编辑的是决策报表中的图表,那么没有ChartHyperRelateFloatLink 和 ChartHyperRelateCellLink 选项,有FormHyperlink 选项 + if (ComparatorUtils.equals(aClass, object.getClass())) { + return false; + } + } else if (template.getEditingReportIndex() == BaseJForm.ELEMENTCASE_TAB) { + // 编辑的是决策报表中的报表块,那么没有 ChartHyperRelateFloatLink,有ChartHyperRelateCellLink 和 FormHyperlink 选项 + return !ComparatorUtils.equals(object.getClass(), ChartHyperRelateFloatLink.class); + } + } + } + return true; + } + }; } } diff --git a/designer-chart/src/main/java/com/fr/design/module/FormHyperlinkGroup.java b/designer-chart/src/main/java/com/fr/design/module/FormHyperlinkGroup.java index 473d55a40..f10964d4c 100644 --- a/designer-chart/src/main/java/com/fr/design/module/FormHyperlinkGroup.java +++ b/designer-chart/src/main/java/com/fr/design/module/FormHyperlinkGroup.java @@ -8,7 +8,6 @@ import com.fr.design.chart.series.SeriesCondition.impl.FormHyperlinkPane; import com.fr.design.gui.controlpane.NameObjectCreator; import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.frpane.BaseHyperlinkGroup; - import com.fr.js.FormHyperlinkProvider; import com.fr.stable.ArrayUtils; import com.fr.stable.bridge.StableFactory; @@ -23,15 +22,16 @@ public class FormHyperlinkGroup extends BaseHyperlinkGroup { /** * 返回支持的超级链接类型 + * * @return NameableCreator[] */ public NameableCreator[] getHyperlinkCreators() { - FormHyperlinkProvider formHyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); - NameableCreator[] realted4CharthyperUse = { + FormHyperlinkProvider formHyperlink = StableFactory.getMarkedInstanceObjectFromClass(FormHyperlinkProvider.XML_TAG, FormHyperlinkProvider.class); + NameableCreator[] related4ChartHyper = { new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Float_Chart"), ChartHyperPoplink.class, ChartHyperPoplinkPane.ChartNoRename.class), new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Cell"), ChartHyperRelateCellLink.class, ChartHyperRelateCellLinkPane.ChartNoRename.class), new NameObjectCreator(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Chart_Hyperlink_Form_Link"), formHyperlink.getClass(), FormHyperlinkPane.class)}; - return (NameableCreator[]) ArrayUtils.addAll(super.getHyperlinkCreators(), realted4CharthyperUse); + return ArrayUtils.addAll(super.getHyperlinkCreators(), related4ChartHyper); } } diff --git a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartShortCutFactory.java b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartShortCutFactory.java index b9b41302e..2ab52f2f4 100644 --- a/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartShortCutFactory.java +++ b/designer-chart/src/main/java/com/fr/van/chart/custom/component/VanChartShortCutFactory.java @@ -1,10 +1,7 @@ package com.fr.van.chart.custom.component; -import com.fr.design.gui.HyperlinkFilterHelper; -import com.fr.design.gui.controlpane.NameableCreator; -import com.fr.design.gui.controlpane.shortcutfactory.ShortCutFactory; import com.fr.design.gui.controlpane.ShortCutListenerProvider; -import com.fr.design.menu.ShortCut; +import com.fr.design.gui.controlpane.shortcutfactory.ShortCutFactory; /** * Created by plough on 2018/8/13. @@ -17,21 +14,4 @@ class VanChartShortCutFactory extends ShortCutFactory { public static VanChartShortCutFactory newInstance(ShortCutListenerProvider listenerProvider) { return new VanChartShortCutFactory(listenerProvider); } - - @Override - public ShortCut createAddItemMenuDef(NameableCreator[] creators) { - return new AddVanChartItemMenuDef(creators); - } - - private class AddVanChartItemMenuDef extends AddItemMenuDef { - - AddVanChartItemMenuDef(NameableCreator[] creators) { - super(creators); - } - - @Override - protected boolean whetherAdd(String itemName) { - return HyperlinkFilterHelper.whetherAddHyperlink4Chart(itemName); - } - } }