From ff271147c1f325967b4ce02ac00bebd08d1618f4 Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 26 Jul 2018 10:24:30 +0800 Subject: [PATCH 01/38] =?UTF-8?q?REPORT-9958=20=E5=8F=82=E8=80=83=E9=99=84?= =?UTF-8?q?=E4=BB=B6=E6=88=AA=E5=9B=BE=EF=BC=8C=E7=82=B9=E5=A1=AB=E6=8A=A5?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=86=85=E7=BD=AEsql=E5=8F=B3=E8=BE=B9=E6=98=AF?= =?UTF-8?q?=E7=A9=BA=E7=99=BD=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/frpane/LoadingBasicPane.java | 17 +++++++++++++---- .../fr/design/webattr/ReportWriteAttrPane.java | 12 ++++++++++-- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/frpane/LoadingBasicPane.java b/designer-base/src/main/java/com/fr/design/gui/frpane/LoadingBasicPane.java index db89371fd..f29707fd7 100644 --- a/designer-base/src/main/java/com/fr/design/gui/frpane/LoadingBasicPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/frpane/LoadingBasicPane.java @@ -7,10 +7,14 @@ import com.fr.design.dialog.BasicPane; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.LayoutUtils; -import com.fr.general.Inter; +import com.fr.locale.InterProviderFactory; -import javax.swing.*; -import java.awt.*; +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.SwingConstants; +import javax.swing.SwingWorker; +import java.awt.BorderLayout; +import java.awt.CardLayout; /** * @author richer @@ -23,6 +27,10 @@ public abstract class LoadingBasicPane extends BasicPane { private JProgressBar progressBar; public LoadingBasicPane() { initCards(); + initPane(); + } + + protected void initPane(){ new SwingWorker() { @Override @@ -42,13 +50,14 @@ public abstract class LoadingBasicPane extends BasicPane { } + private void initCards() { card = new CardLayout(); setLayout(card); JPanel loadingDisPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); String[] message = {"Loading","Please-Wait"}; String[] operator = {",","..."}; - UILabel loadingPane = new UILabel(Inter.getLocText(message,operator) , SwingConstants.CENTER); + UILabel loadingPane = new UILabel(InterProviderFactory.getProvider().getLocText(message,operator) , SwingConstants.CENTER); loadingDisPane.add(loadingPane, BorderLayout.CENTER); progressBar = new JProgressBar(); progressBar.setIndeterminate(true); diff --git a/designer-realize/src/main/java/com/fr/design/webattr/ReportWriteAttrPane.java b/designer-realize/src/main/java/com/fr/design/webattr/ReportWriteAttrPane.java index 48a62660c..62ce611e4 100644 --- a/designer-realize/src/main/java/com/fr/design/webattr/ReportWriteAttrPane.java +++ b/designer-realize/src/main/java/com/fr/design/webattr/ReportWriteAttrPane.java @@ -11,8 +11,11 @@ import com.fr.general.Inter; import com.fr.report.worksheet.WorkSheet; import com.fr.report.write.ReportWriteAttr; -import javax.swing.*; -import java.awt.*; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; + public class ReportWriteAttrPane extends LoadingBasicPane { private SubmitVisitorListPane submiterListPane; @@ -25,6 +28,11 @@ public class ReportWriteAttrPane extends LoadingBasicPane { } public ReportWriteAttrPane(ElementCasePane ePane){ this.ePane = ePane; + super.initPane(); + } + + protected void initPane(){ + } @Override From fd2563bfe4bd603b577e56033d4cf5a0721e639d Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 26 Jul 2018 10:30:34 +0800 Subject: [PATCH 02/38] =?UTF-8?q?=E6=97=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/frpane/LoadingBasicPane.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/frpane/LoadingBasicPane.java b/designer-base/src/main/java/com/fr/design/gui/frpane/LoadingBasicPane.java index 015e1c85a..0633c1406 100644 --- a/designer-base/src/main/java/com/fr/design/gui/frpane/LoadingBasicPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/frpane/LoadingBasicPane.java @@ -8,9 +8,13 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.utils.gui.LayoutUtils; +import javax.swing.JPanel; +import javax.swing.JProgressBar; +import javax.swing.SwingConstants; +import javax.swing.SwingWorker; +import java.awt.BorderLayout; +import java.awt.CardLayout; -import javax.swing.*; -import java.awt.*; /** * @author richer @@ -23,6 +27,10 @@ public abstract class LoadingBasicPane extends BasicPane { private JProgressBar progressBar; public LoadingBasicPane() { initCards(); + initPane(); + } + + protected void initPane(){ new SwingWorker() { @Override @@ -42,6 +50,7 @@ public abstract class LoadingBasicPane extends BasicPane { } + private void initCards() { card = new CardLayout(); setLayout(card); From e0a4242f0cc057fdf995fcc754d49d94f878d580 Mon Sep 17 00:00:00 2001 From: richie Date: Thu, 26 Jul 2018 11:45:20 +0800 Subject: [PATCH 03/38] =?UTF-8?q?CORE-116=20DataModel=E5=92=8CTableData?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=A7=84=E8=8C=83=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/utils/DesignUtils.java | 67 +------------------ 1 file changed, 1 insertion(+), 66 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java index 84335dd91..7082268d2 100644 --- a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java @@ -1,13 +1,9 @@ package com.fr.design.utils; import com.fr.base.BaseUtils; -import com.fr.base.EnvException; import com.fr.base.FRContext; import com.fr.base.FeedBackInfo; import com.fr.base.ServerConfig; -import com.fr.base.Utils; -import com.fr.base.remote.RemoteDeziConstants; -import com.fr.dav.DavXMLUtils; import com.fr.design.DesignerEnvManager; import com.fr.design.ExtraDesignClassManager; import com.fr.design.fun.DesignerEnvProcessor; @@ -17,8 +13,6 @@ import com.fr.file.FileFILE; import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; import com.fr.general.GeneralContext; - -import com.fr.general.http.HttpClient; import com.fr.log.FineLoggerFactory; import com.fr.stable.ArrayUtils; import com.fr.stable.CodeUtils; @@ -32,16 +26,12 @@ import javax.swing.*; import java.awt.*; import java.io.BufferedReader; import java.io.BufferedWriter; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; -import java.net.HttpURLConnection; import java.net.ServerSocket; import java.net.Socket; import java.net.URI; @@ -417,61 +407,6 @@ public class DesignUtils { * @throws Exception 异常 */ public static boolean sendFeedBack(FeedBackInfo feedBackInfo) throws Exception { - - ByteArrayOutputStream out = new ByteArrayOutputStream(); - - // 把tableData写成xml文件到out - DavXMLUtils.writeXMLFeedBackInfo(feedBackInfo, out); - InputStream input = postBytes2ServerB(out.toByteArray()); - return input != null; - - } - - - private static InputStream postBytes2ServerB(byte[] bytes) throws Exception { - HttpClient client = new HttpClient("http://114.215.175.35:8080/WebReport/product_advice.jsp"); - client.asGet(); - client.setContent(bytes); - return execute4InputStream(client); - } - - - /** - * execute method之后,取返回的inputstream - */ - private static ByteArrayInputStream execute4InputStream(HttpClient client) throws Exception { - int statusCode = client.getResponseCode(); - if (statusCode != HttpURLConnection.HTTP_OK) { - throw new EnvException("Method failed: " + statusCode); - } - InputStream in = client.getResponseStream(); - if (in == null) { - return null; - } - ByteArrayOutputStream out = new ByteArrayOutputStream(); - try { - Utils.copyBinaryTo(in, out); - - // 看一下传过来的byte[]是不是DesignProcessor.INVALID,如果是的话,就抛Exception - byte[] bytes = out.toByteArray(); - // carl:格式一致传中文 - String message = new String(bytes, EncodeConstants.ENCODING_UTF_8); - if (ComparatorUtils.equals(message, RemoteDeziConstants.NO_SUCH_RESOURCE)) { - return null; - } else if (ComparatorUtils.equals(message, RemoteDeziConstants.INVALID_USER)) { - throw new EnvException(RemoteDeziConstants.INVALID_USER); - } else if (ComparatorUtils.equals(message, RemoteDeziConstants.FILE_LOCKED)) { - JOptionPane.showMessageDialog(null, com.fr.design.i18n.Toolkit.i18nText("FR-Designer_file-is-locked")); - return null; - } else if (message.startsWith(RemoteDeziConstants.RUNTIME_ERROR_PREFIX)) { - } - return new ByteArrayInputStream(bytes); - } finally { - in.close(); - out.close(); - client.release(); - } + return true; } - - } From 4d2296b607ec889b5e9bbaf05612a16519c906fc Mon Sep 17 00:00:00 2001 From: kerry Date: Thu, 26 Jul 2018 12:49:05 +0800 Subject: [PATCH 04/38] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/fr/design/webattr/ReportWriteAttrPane.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/designer-realize/src/main/java/com/fr/design/webattr/ReportWriteAttrPane.java b/designer-realize/src/main/java/com/fr/design/webattr/ReportWriteAttrPane.java index 3b442b33a..ab7aab51c 100644 --- a/designer-realize/src/main/java/com/fr/design/webattr/ReportWriteAttrPane.java +++ b/designer-realize/src/main/java/com/fr/design/webattr/ReportWriteAttrPane.java @@ -28,9 +28,11 @@ public class ReportWriteAttrPane extends LoadingBasicPane { } public ReportWriteAttrPane(ElementCasePane ePane){ this.ePane = ePane; + //REPORT-9958 这边需要赋值后再初始化面板 super.initPane(); } + @Override protected void initPane(){ } From d31ce253360f95366d8805fd8316160b7a9cba4a Mon Sep 17 00:00:00 2001 From: hzzz Date: Thu, 26 Jul 2018 13:50:42 +0800 Subject: [PATCH 05/38] =?UTF-8?q?REPORT-10066=20=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E9=A1=B5=E9=9D=A2=EF=BC=8C=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E8=BF=9C=E7=A8=8B=E6=9C=8D=E5=8A=A1=E5=99=A8=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=80=BC=E6=98=BE=E7=A4=BA=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer-base/src/main/java/com/fr/env/RemoteEnvURL.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/env/RemoteEnvURL.java b/designer-base/src/main/java/com/fr/env/RemoteEnvURL.java index bc948f972..01415c136 100644 --- a/designer-base/src/main/java/com/fr/env/RemoteEnvURL.java +++ b/designer-base/src/main/java/com/fr/env/RemoteEnvURL.java @@ -17,11 +17,11 @@ public class RemoteEnvURL implements FCloneable { /** * 默认 web app name */ - private static final String DEFAULT_WEB_APP_NAME = "WebReport"; + private static final String DEFAULT_WEB_APP_NAME = "webroot"; /** * 默认 servlet name */ - private static final String DEFAULT_SERVLET_NAME = "ReportServer"; + private static final String DEFAULT_SERVLET_NAME = "decision"; /** * 默认端口 */ From 8be3f0b9299c94d8fed2dd982a8b54b7170eadf4 Mon Sep 17 00:00:00 2001 From: plough Date: Thu, 26 Jul 2018 14:32:17 +0800 Subject: [PATCH 06/38] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E6=B8=85=E9=99=A4=E4=B8=A4=E4=B8=AA=E6=97=A0=E7=94=A8=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mainframe/MobileParaWidgetTable.java | 418 ------------------ .../design/mainframe/MobileWidgetTable.java | 353 --------------- 2 files changed, 771 deletions(-) delete mode 100644 designer-form/src/main/java/com/fr/design/mainframe/MobileParaWidgetTable.java delete mode 100644 designer-form/src/main/java/com/fr/design/mainframe/MobileWidgetTable.java diff --git a/designer-form/src/main/java/com/fr/design/mainframe/MobileParaWidgetTable.java b/designer-form/src/main/java/com/fr/design/mainframe/MobileParaWidgetTable.java deleted file mode 100644 index e7e5089b5..000000000 --- a/designer-form/src/main/java/com/fr/design/mainframe/MobileParaWidgetTable.java +++ /dev/null @@ -1,418 +0,0 @@ -package com.fr.design.mainframe; - - -import com.fr.design.designer.creator.XCreator; -import com.fr.design.designer.creator.XLayoutContainer; -import com.fr.design.designer.creator.XWParameterLayout; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itable.HeaderRenderer; -import com.fr.design.gui.itextfield.UITextField; -import com.fr.form.ui.Label; -import com.fr.form.ui.Widget; -import com.fr.form.ui.container.WParameterLayout; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.stable.StringUtils; - -import javax.swing.*; -import javax.swing.event.DocumentEvent; -import javax.swing.event.DocumentListener; -import javax.swing.table.*; -import java.awt.*; -import java.awt.event.FocusAdapter; -import java.awt.event.FocusEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.geom.RoundRectangle2D; -import java.util.EventObject; - -/** - * MobileParaWidgetTable主要显示参数面板容器的控件列表,与MobileWidgetTable的区别就是该表多了UITextField这一列 - * Created with IntelliJ IDEA. - * User: zx - * Date: 14-7-9 - * Time: 上午11:26 - * Modified by fanglei during 2017/1/22 - 2017/2/ - */ -class MobileParaWidgetTable extends JTable { - - private FormDesigner designer; - private String[][] cellData; - private String[] headers = {Inter.getLocText("FR-Designer_Label"), Inter.getLocText("FR-Designer_Widgetname")}; - private static final int WIDGET_TABLE_ROW_HEIGHT = 22; - private static final int UITEXTFIELD_WIDTH = 0; - private static final int GAP = 11; - private UILabel moveComponent = new UILabel(); // 作为拖动时候随鼠标移动的那个半透明控件 - private int selectedRow = -1; - private int selectedColumn = -1; - private boolean draging = false; - - private void init(FormDesigner designer) { - this.designer = designer; - this.cellData = getData(); - this.setTableProperties(); - this.setDefaultEditor(Object.class, new MobileCellEditor()); - this.setModel(new BeanTableModel()); - this.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); - TableColumn tc = this.getColumn(this.getColumnName(0)); - tc.setMinWidth(UITEXTFIELD_WIDTH); - tc.setMaxWidth(UITEXTFIELD_WIDTH); - tc.setPreferredWidth(UITEXTFIELD_WIDTH); - this.repaint(); - this.setDefaultRenderer(Object.class, new MobileWidgetTableCellRenderer()); - refreshData(); - this.addMouseListener(mouseAdapter); - this.addMouseMotionListener(mouseAdapter); - } - - MobileParaWidgetTable(FormDesigner designer) { - init(designer); - add(moveComponent); - } - - private void setTableProperties() { - JTableHeader header = getTableHeader(); - header.setReorderingAllowed(false); - header.setPreferredSize(new Dimension(0, WIDGET_TABLE_ROW_HEIGHT)); - header.setDefaultRenderer(new HeaderRenderer()); - - this.setRowHeight(WIDGET_TABLE_ROW_HEIGHT); - this.setGridColor(new Color(212, 208, 200)); - this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - this.setColumnSelectionAllowed(false); - this.setRowSelectionAllowed(false); - this.setFillsViewportHeight(true); - } - - private MouseAdapter mouseAdapter = new MouseAdapter() { - /** - * 鼠标按下时处理的事件(设置当前选中的行列) - * @param e - */ - @Override - public void mousePressed(MouseEvent e) { - getInstance().setCellSelected(); - } - - /** - * 鼠标放开时处理的事件(如果是正在拖动则执行换位操作,重新绘制属性表,如果不是则什么也不做) - * @param e - */ - @Override - public void mouseReleased(MouseEvent e) { - if (!draging) { - return; - } - draging = false; - moveComponent.setVisible(false); - int toIndex = e.getY() < GAP ? 0 : (int) Math.rint((e.getY() - GAP) / WIDGET_TABLE_ROW_HEIGHT) + 1; - //当鼠标放开时,将选中的容器调整至新的顺序 - ((WParameterLayout) designer.getParaComponent().toData()).adjustOrder(selectedRow, toIndex); - //拿取排序后表格数据,然后重绘表格 - getInstance().refreshData(); - getInstance().repaint(); - designer.fireTargetModified(); - getInstance().setCellSelected(); - } - - /** - * 设置鼠标在属性表区域移动时候的事件 - * @param e - */ - @Override - public void mouseMoved(MouseEvent e) { - int overColumn = e.getX() < getColumnModel().getColumn(0).getWidth() ? 0 : 1; // 判断当前鼠标在哪一列 - int overRow = -1; - for (int i = 0; i < getRowCount(); i++) { - if (e.getY() > i * WIDGET_TABLE_ROW_HEIGHT && e.getY() <= (i + 1) * WIDGET_TABLE_ROW_HEIGHT) { - overRow = i; //判断当前鼠标在哪一行 - } - } - //如果鼠标移动到当前选中的行列上面的时候,并且不能在第一列 - if (overRow == selectedRow && overColumn == selectedColumn && overColumn != 0) { - //把当前选中的那一列行的光标改成(除了第一列)移动样式MOVE_CURSOR - setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); - } else { - setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - } - } - - /** - * 鼠标拖动事件(如果鼠标当前是MOVE_CURSOR状态则执行开始拖动的代码, - * 绘制一个moveComponent来跟随鼠标移动) - * @param e - */ - @Override - public void mouseDragged(MouseEvent e) { - int width = getColumnModel().getColumn(1).getWidth(); - //如果点击选中的是第二列,就可以拖动 - if (selectedColumn == 1) { - setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); - draging = true; - moveComponent.setText(getValueAt(selectedRow, selectedColumn).toString()); - moveComponent.setLocation(getColumnModel().getColumn(0).getWidth(), e.getY() - GAP); - moveComponent.setSize(new Dimension(width, WIDGET_TABLE_ROW_HEIGHT)); - moveComponent.setVisible(true); - moveComponent.setForeground(Color.lightGray); - moveComponent.setBorder(BorderFactory.createLineBorder(Color.lightGray)); - } - } - - /** - * 设置鼠标单击时处理的事件(单击第二列的控件列表进入控件属性表) - * @param e - */ - @Override - public void mouseClicked(MouseEvent e) { - if (getSelectedRow() != -1 && getSelectedColumn() == 1) { - String widgetName = cellData[getSelectedRow()][getSelectedColumn()]; - if (StringUtils.isNotEmpty(widgetName)) { - int count = getEditingDesigner().getParaComponent().getComponentCount(); - for (int i = 0; i < count; i++) { - XCreator xCreator = (XCreator) getEditingDesigner().getParaComponent().getComponent(i); - Widget widget = xCreator.toData(); - if (!widget.acceptType(Label.class) && ComparatorUtils.equals(widgetName, widget.getWidgetName())) { - //设置选中的component,这句代码控制点击之后跳转到相应component属性表 - getEditingDesigner().getSelectionModel().setSelectedCreator(xCreator); - } - } - } - } - } - - /** - * 鼠标离开属性表区域事件 - * @param e - */ - @Override - public void mouseExited(MouseEvent e) { - draging = false; - moveComponent.setVisible(false); - setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - } - }; - - public MobileParaWidgetTable getInstance() { - return this; - } - - private FormDesigner getEditingDesigner() { - return designer; - } - - /** - * 设置当前get到的行列的单元格为选中状态 - */ - private void setCellSelected() { - selectedRow = getSelectedRow(); - selectedColumn = getSelectedColumn(); - if (selectedRow != -1) { - this.setRowSelectionInterval(selectedRow, selectedRow); - } - if (selectedColumn != -1) { - this.setColumnSelectionInterval(selectedColumn, selectedColumn); - } - } - - /** - * 重新get排序后的数据 - */ - public void refreshData() { - cellData = getData(); - } - - /** - * 获取参数面板的控件列表 - * - * @return String[][] 二维数组,[0][0]widgetTag, [0][1]widgetName - */ - private String[][] getData() { - XLayoutContainer paraContainer = designer.getParaComponent(); - if (paraContainer == null || !paraContainer.acceptType(XWParameterLayout.class)) { - return new String[0][0]; - } - - WParameterLayout para = (WParameterLayout) (paraContainer.toData()); - return para.getWidgetNameTag(); - } - - /** - * 自定义的tableRender类 - */ - private class MobileWidgetTableCellRenderer extends DefaultTableCellRenderer { - @Override - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, - boolean hasFocus, int row, int column) { - super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); - if (column == 0) { - UITextField uiTableTextField; - if (getSelectedColumn() == column && getSelectedRow() == row) { - uiTableTextField = new UITableTextField(value.toString()); - } else { - uiTableTextField = new UITextField(value.toString()); - } - return uiTableTextField; - } - return this; - } - - } - - /** - * 自定义的tableEditor类 - */ - private class MobileCellEditor extends AbstractCellEditor implements TableCellEditor { - UITableTextField uiTableTextField; - - MobileCellEditor() { - uiTableTextField = new UITableTextField(); - uiTableTextField.addFocusListener(new FocusAdapter() { - @Override - public void focusLost(FocusEvent evt) { - stopCellEditing(); - designer.fireTargetModified(); - } - }); - uiTableTextField.getDocument().addDocumentListener(new DocumentListener() { - @Override - public void insertUpdate(DocumentEvent e) { - firePropertyChange(); - } - - @Override - public void removeUpdate(DocumentEvent e) { - firePropertyChange(); - } - - @Override - public void changedUpdate(DocumentEvent e) { - firePropertyChange(); - } - }); - } - - /** - * cell改变,相应的nametag改变 - */ - - private void firePropertyChange() { - ((WParameterLayout) designer.getParaComponent().toData()).add2NameTagMap(uiTableTextField.getText(), - cellData[getSelectedRow()][1]); - ((WParameterLayout) designer.getParaComponent().toData()).setNameTagModified(cellData[getSelectedRow()][1], - true); - } - - @Override - public Object getCellEditorValue() { - return uiTableTextField.getText(); - } - - /** - * 双击以编辑, 表示只有双击的情况下才可以编辑 - */ - @Override - public boolean isCellEditable(EventObject anEvent) { - return !(anEvent instanceof MouseEvent) || ((MouseEvent) anEvent).getClickCount() >= 2; - } - - @Override - public Component getTableCellEditorComponent(JTable table, Object value, - boolean isSelected, int row, int column) { - uiTableTextField.setText(value.toString()); - return uiTableTextField; - } - } - - /** - * BeanTableModel类继承DefaultTableModel类,指定了表格的表头和内容 - */ - private class BeanTableModel extends DefaultTableModel { - BeanTableModel() { - super(cellData, headers); - } - - @Override - public int getRowCount() { - return cellData.length; - } - - @Override - public int getColumnCount() { - return headers.length; - } - - - @Override - public Object getValueAt(int row, int column) { - if (row >= getRowCount() || column >= getColumnCount()) { - return null; - } - Object[] rowValue = cellData[row]; - if (column > -1 && column < rowValue.length) { - return cellData[row][column]; - } - return null; - } - - @Override - public String getColumnName(int column) { - if (column == 0) { - return headers[0]; - } else { - return headers[1]; - } - } - - - @Override - public void setValueAt(Object aValue, int row, int column) { - if (row >= getRowCount() || column >= getColumnCount()) { - return; - } - if (aValue == null) { - cellData[row][column] = null; - return; - } - cellData[row][column] = aValue.toString(); - } - - /** - * 是否可编辑 控件标签列可以编辑,控件名不可编辑 - * - * @param row 行号 - * @param column 列号 - * @return 是否可编辑 - */ - public boolean isCellEditable(int row, int column) { - return column != 1; - } - - } - - /** - * 继承自JTextField类,重写了编辑框的样式 - */ - private class UITableTextField extends UITextField { - public UITableTextField() { - super(); - } - - public UITableTextField(String string) { - super(string); - } - - protected void paintBorder(Graphics g) { - Graphics2D g2d = (Graphics2D) g; - g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - if (this.isFocusOwner()) { - g2d.setStroke(new BasicStroke(1.5f)); - } else { - g2d.setStroke(new BasicStroke(1f)); - } - RoundRectangle2D.Double rect = new RoundRectangle2D.Double(0, 0, this.getWidth() - 2, this.getHeight() - 2, 4, 4); - g2d.setColor(Color.orange); - g2d.draw(rect); - } - - } -} \ No newline at end of file diff --git a/designer-form/src/main/java/com/fr/design/mainframe/MobileWidgetTable.java b/designer-form/src/main/java/com/fr/design/mainframe/MobileWidgetTable.java deleted file mode 100644 index 982f5aad0..000000000 --- a/designer-form/src/main/java/com/fr/design/mainframe/MobileWidgetTable.java +++ /dev/null @@ -1,353 +0,0 @@ -package com.fr.design.mainframe; - -import java.awt.*; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.ArrayList; -import java.util.List; - -import javax.swing.BorderFactory; -import javax.swing.JLabel; -import javax.swing.JTable; -import javax.swing.ListSelectionModel; -import javax.swing.table.*; - -import com.fr.design.designer.creator.XCreator; -import com.fr.design.gui.ilable.UILabel; -import com.fr.design.gui.itable.GroupRenderer; -import com.fr.form.ui.Widget; -import com.fr.form.ui.container.*; -import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; -import com.fr.stable.StringUtils; - -/** - * MobileWidgetTable类主要显示各种容器的控件列表(body,tab,绝对布局快,不包括参数面板) - * Created with IntelliJ IDEA. - * User: zx - * Date: 14-9-15 - * Time: 下午4:52 - * Modified by fanglei at 2017/01/23 - */ -public class MobileWidgetTable extends JTable { - - private FormDesigner designer; - private String[][] cellData; - private String[] headers = {Inter.getLocText("Form-Widget_Name")}; - private static final int WIDGET_TABLE_ROW_HEIGHT = 22; - private UILabel moveComponent = new UILabel(); // 作为拖动时候随鼠标移动的那个半透明控件 - private int selectedRow = -1; - private static final int GAP = 11; - private boolean draging = false; - private boolean collapsed = false; // 控件列表是否折叠 - - @Override - public TableCellRenderer getCellRenderer(int row, int column) { - //第一行渲染成为标题的样子 - if (row == 0) { - return new GroupRenderer(); - } - return super.getCellRenderer(row, column); - } - - - public MobileWidgetTable(FormDesigner designer) { - this.designer = designer; - cellData = getData(); - this.setTableProperties(); - TableModel defaultModel = new BeanTableModel(); - this.setModel(defaultModel); - this.repaint(); - this.setDefaultRenderer(Object.class, new DefaultTableCellRenderer()); - refreshData(); - this.addMouseListener(mouseAdapter); - this.addMouseMotionListener(mouseAdapter); - add(moveComponent); - } - - private void setTableProperties() { - JTableHeader header = getTableHeader(); - header.setReorderingAllowed(false); - header.setPreferredSize(new Dimension(0, 0)); // 隐藏表头 - GroupRenderer headerRenderer = new GroupRenderer(); - headerRenderer.setPreferredSize(new Dimension(0, 0)); //这行代码隐藏表头。因为要实现折叠效果,表头不好监听事件 - headerRenderer.setHorizontalAlignment(JLabel.LEFT); - header.setDefaultRenderer(headerRenderer); - - this.setRowHeight(WIDGET_TABLE_ROW_HEIGHT); - this.setGridColor(new Color(212, 208, 200)); - this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - this.setColumnSelectionAllowed(false); - this.setRowSelectionAllowed(false); - this.setFillsViewportHeight(false); - this.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); - } - - private MouseAdapter mouseAdapter = new MouseAdapter() { - /** - * 鼠标按下时处理的事件(设置当前选中的行列) - * @param e - */ - @Override - public void mousePressed(MouseEvent e) { - getInstance().setCellSelected(); - if (selectedRow == 0 && !e.isPopupTrigger() && e.getClickCount() == 1 && e.getX() < WIDGET_TABLE_ROW_HEIGHT / 2) { // 如果是点击在第一行 - toggleCollapse(); - } - } - - /** - * 鼠标放开时处理的事件(如果是正在拖动则执行换位操作,重新绘制属性表,如果不是则什么也不做) - * 所谓的换行就是简单的重新拿到一次表格数据然后重新绘制表格 - * @param e - */ - @Override - public void mouseReleased(MouseEvent e) { - if (!draging) { - return; - } - draging = false; - moveComponent.setVisible(false); - int toIndex = e.getY() < GAP ? 0 : (int) Math.rint((e.getY() - GAP) / WIDGET_TABLE_ROW_HEIGHT) + 1; - //当鼠标放开时,将选中的容器调整至新的顺序 - ((WSortLayout) designer.getSelectionModel().getSelection().getSelectedCreator().toData()).adjustOrder(selectedRow - 1, toIndex - 1); - //拿取排序后表格数据,然后重绘表格 - getInstance().refreshData(); - getInstance().repaint(); - designer.fireTargetModified(); - getInstance().setCellSelected(); - } - - /** - * 设置鼠标在属性表区域移动时候的事件 - * @param e - */ - @Override - public void mouseMoved(MouseEvent e) { - int overRow = 0; - for (int i = 0; i < getRowCount(); i++) { - if (e.getY() > i * WIDGET_TABLE_ROW_HEIGHT && e.getY() <= (i + 1) * WIDGET_TABLE_ROW_HEIGHT) { - overRow = i; //判断鼠标在哪一行 - } - } - //如果鼠标移动到当前选中的行上面的时候 - if (overRow == selectedRow && selectedRow > 0) { - //把当前选中的那一行的光标改成(除了第一列)移动样式MOVE_CURSOR - setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); - } else { - setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - } - } - - /** - * 鼠标拖动事件(如果鼠标当前是MOVE_CURSOR状态则执行开始拖动的代码, - * 绘制一个moveComponent来跟随鼠标移动) - * @param e - */ - @Override - public void mouseDragged(MouseEvent e) { - int width = getColumnModel().getColumn(0).getWidth(); - //如果当前选中的行的范围是合理的话,就可以拖动 - if (selectedRow < getRowCount() && selectedRow > 0) { - setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); - draging = true; - moveComponent.setText(getValueAt(selectedRow, 0).toString()); - moveComponent.setLocation(0, e.getY() - GAP); - moveComponent.setSize(new Dimension(width, WIDGET_TABLE_ROW_HEIGHT)); - moveComponent.setVisible(true); - moveComponent.setForeground(Color.lightGray); - moveComponent.setBorder(BorderFactory.createLineBorder(Color.lightGray)); - } - } - - /** - * 设置鼠标单击时处理的事件(单击控件列表进入控件属性表) - * @param e - */ - @Override - public void mouseClicked(MouseEvent e) { - if (selectedRow > 0) { - //当前点击的控件的名字 - String widgetName = cellData[selectedRow][0]; - if (StringUtils.isNotEmpty(widgetName)) { - //当前选择的容器 - XCreator selectedContainer = designer.getSelectionModel().getSelection().getSelectedCreator(); - WLayout selectedWidget = (WLayout) selectedContainer.toData(); - //当前选择的容器中的控件数量 - int count = selectedWidget.getWidgetCount(); - for (int i = 0; i < count; i++) { - XCreator xCreator = (XCreator) selectedContainer.getComponent(i); - Widget widget = xCreator.toData(); - if (ComparatorUtils.equals(widgetName, widget.getWidgetName())) { - getEditingDesigner().getSelectionModel().setSelectedCreator(xCreator); - } - } - } - } else if (selectedRow == 0) { // 如果是点击在第一行 - if (!e.isPopupTrigger() && e.getClickCount() > 1) { - toggleCollapse(); - } - } - } - - /** - * 鼠标离开属性表区域事件 - * @param e - */ - public void mouseExited(MouseEvent e) { - draging = false; - moveComponent.setVisible(false); - setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); - } - }; - - public MobileWidgetTable getInstance() { - return this; - } - - public FormDesigner getEditingDesigner() { - return designer; - } - - /** - * 设置当前get到的行列的单元格为选中状态 - */ - private void setCellSelected() { - selectedRow = getSelectedRow(); - if (selectedRow != -1) { - this.setRowSelectionInterval(selectedRow, selectedRow); - this.setColumnSelectionInterval(0, 0); - } - } - - /** - * 切换属性组折叠属性true/false - */ - private void toggleCollapse() { - this.setCollapsed(!this.isCollapsed()); - //这里获取表格的父控件是为了当表格被折叠了后,装表格的父控件也要相应的重新布局一下 - //比如折叠之后表格行数应该比原来的少,占用父容器空间应该小点,不重新布局父容器,表格大小不会改变 - Container parent = MobileWidgetTable.this.getParent(); - if (parent != null) { - parent.revalidate(); - } - repaint(); - } - - /** - * 重新get排序后的数据 - */ - public void refreshData() { - cellData = getData(); - } - - /** - * 获取选中控件的控件列表 - * - * @return String[][] 二维数组,[0][0]widgetName - */ - private String[][] getData() { - List mobileWidgetList = new ArrayList(); - if (designer.isFormParaDesigner()) { - return new String[0][0]; - } - - WSortLayout body = (WSortLayout) designer.getRootComponent().toData(); - - if (body == null) { - return new String[0][0]; - } - - body.setSorted(false); - - if (body.getWidgetCount() > 0 && body.getWidget(0).acceptType(WAbsoluteBodyLayout.class)) { - WAbsoluteBodyLayout absoluteBodyLayout = (WAbsoluteBodyLayout) ((WAbsoluteLayout.BoundsWidget) body.getWidget(0)).getWidget(); - mobileWidgetList = absoluteBodyLayout.getOrderedMobileWidgetList(); - } else { - mobileWidgetList = body.getOrderedMobileWidgetList(); - } - String[][] widgetName = new String[mobileWidgetList.size() + 1][1]; - widgetName[0][0] = Inter.getLocText("FR-Designer_WidgetOrder"); - for (int i = 0; i < mobileWidgetList.size(); i++) { - widgetName[i + 1][0] = mobileWidgetList.get(i); - } - - body.setSorted(true); - return widgetName; - - } - - public boolean isCollapsed() { - return collapsed; - } - - public void setCollapsed(boolean collapsed) { - this.collapsed = collapsed; - } - - /** - * 自定义的tableEditor类 - */ - public class BeanTableModel extends DefaultTableModel { - public BeanTableModel() { - super(cellData, headers); - } - - @Override - public int getRowCount() { - if (isCollapsed()) { - return 1; - } - return cellData.length; - } - - @Override - public int getColumnCount() { - return 1; - } - - - @Override - public Object getValueAt(int row, int column) { - if (row >= getRowCount() || column >= getColumnCount()) { - return null; - } - if (row == 0) { - return (isCollapsed() ? "+" : "-") + cellData[row][0]; - } - - return cellData[row][0]; - } - - @Override - public String getColumnName(int column) { - return headers[0]; - } - - - @Override - public void setValueAt(Object aValue, int row, int column) { - if (row >= getRowCount() || column >= getColumnCount()) { - return; - } - if (aValue == null) { - cellData[row] = null; - return; - } - cellData[row][0] = aValue.toString(); - } - - /** - * 是否可编辑 - * - * @param row 行号 - * @param column 列号 - * @return 是否可编辑 - */ - public boolean isCellEditable(int row, int column) { - return false; - } - - } - -} \ No newline at end of file From 4803d6d27401a7d9d2580f1821a1e645f78c4761 Mon Sep 17 00:00:00 2001 From: hzzz Date: Thu, 26 Jul 2018 15:13:25 +0800 Subject: [PATCH 07/38] . --- designer-base/src/main/java/com/fr/env/RemoteEnvURL.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/env/RemoteEnvURL.java b/designer-base/src/main/java/com/fr/env/RemoteEnvURL.java index 01415c136..717dc0584 100644 --- a/designer-base/src/main/java/com/fr/env/RemoteEnvURL.java +++ b/designer-base/src/main/java/com/fr/env/RemoteEnvURL.java @@ -25,7 +25,7 @@ public class RemoteEnvURL implements FCloneable { /** * 默认端口 */ - private static final String DEFAULT_PORT = "8080"; + private static final String DEFAULT_PORT = "8075"; private static final String HTTPS = "https://"; private static final String HTTP = "http://"; From 3551be07b4d3e7c1614a736d496613236534d9b0 Mon Sep 17 00:00:00 2001 From: hzzz Date: Thu, 26 Jul 2018 15:19:00 +0800 Subject: [PATCH 08/38] . --- .../main/java/com/fr/env/RemoteEnvPane.java | 47 ++++++----- ...oteEnvURL.java => RemoteWorkspaceURL.java} | 24 +++--- .../java/com/fr/env/RemoteEnvURLTest.java | 82 +++++++++---------- 3 files changed, 76 insertions(+), 77 deletions(-) rename designer-base/src/main/java/com/fr/env/{RemoteEnvURL.java => RemoteWorkspaceURL.java} (90%) diff --git a/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java b/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java index dc39232b1..a49779ea4 100644 --- a/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java +++ b/designer-base/src/main/java/com/fr/env/RemoteEnvPane.java @@ -23,7 +23,6 @@ import javax.swing.BorderFactory; import javax.swing.BoxLayout; import javax.swing.JDialog; import javax.swing.JFileChooser; -import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextPane; import javax.swing.SwingConstants; @@ -115,7 +114,7 @@ public class RemoteEnvPane extends BasicBeanPane { /** * 主机位置 */ - private RemoteEnvURL remoteEnvURL = new RemoteEnvURL(""); + private RemoteWorkspaceURL remoteWorkspaceURL = new RemoteWorkspaceURL(""); /** * https 配置面板 */ @@ -189,7 +188,7 @@ public class RemoteEnvPane extends BasicBeanPane { fileChooserButton.setEnabled(isHttps); updateHttpsConfigPanel(); - remoteEnvURL.setHttps(isHttps); + remoteWorkspaceURL.setHttps(isHttps); fillRemoteEnvURLField(); fillIndividualField(); } @@ -267,9 +266,9 @@ public class RemoteEnvPane extends BasicBeanPane { public void populateBean(RemoteDesignerWorkspaceInfo ob) { WorkspaceConnection connection = ob.getConnection(); if (connection != null) { - this.remoteEnvURL = Strings.isNullOrEmpty(connection.getUrl()) - ? RemoteEnvURL.createDefaultURL() - : new RemoteEnvURL(connection.getUrl()); + this.remoteWorkspaceURL = Strings.isNullOrEmpty(connection.getUrl()) + ? RemoteWorkspaceURL.createDefaultURL() + : new RemoteWorkspaceURL(connection.getUrl()); String username = fromNullable(connection.getUserName()).or(StringUtils.EMPTY); String pwd = fromNullable(connection.getPassword()).or(StringUtils.EMPTY); String certPath = fromNullable(connection.getCertPath()).or(StringUtils.EMPTY); @@ -280,17 +279,17 @@ public class RemoteEnvPane extends BasicBeanPane { this.certSecretKeyInput.setText(certSecretKey); } else { - this.remoteEnvURL = RemoteEnvURL.createDefaultURL(); + this.remoteWorkspaceURL = RemoteWorkspaceURL.createDefaultURL(); this.usernameInput.setText(StringUtils.EMPTY); this.passwordInput.setText(StringUtils.EMPTY); } fillRemoteEnvURLField(); fillIndividualField(); - httpsCheckbox.setSelected(this.remoteEnvURL.getHttps()); + httpsCheckbox.setSelected(this.remoteWorkspaceURL.getHttps()); - DesignerEnvManager.getEnvManager().setHttps(this.remoteEnvURL.getHttps()); - fileChooserButton.setEnabled(this.remoteEnvURL.getHttps()); + DesignerEnvManager.getEnvManager().setHttps(this.remoteWorkspaceURL.getHttps()); + fileChooserButton.setEnabled(this.remoteWorkspaceURL.getHttps()); updateHttpsConfigPanel(); @@ -299,7 +298,7 @@ public class RemoteEnvPane extends BasicBeanPane { @Override public RemoteDesignerWorkspaceInfo updateBean() { WorkspaceConnection connection = new WorkspaceConnection( - this.remoteEnvURL.getURL(), + this.remoteWorkspaceURL.getURL(), this.usernameInput.getText(), new String(this.passwordInput.getPassword()), this.certPathInput.getText(), @@ -576,7 +575,7 @@ public class RemoteEnvPane extends BasicBeanPane { */ private void fillRemoteEnvURLField() { remoteEnvURLInput.getDocument().removeDocumentListener(overallDocListener); - remoteEnvURLInput.setText(remoteEnvURL.getURL()); + remoteEnvURLInput.setText(remoteWorkspaceURL.getURL()); remoteEnvURLInput.getDocument().addDocumentListener(overallDocListener); } @@ -584,14 +583,14 @@ public class RemoteEnvPane extends BasicBeanPane { * 自动填充子条目输入框 */ private void fillIndividualField() { - if (remoteEnvURL == null) { + if (remoteWorkspaceURL == null) { return; } disableSubDocListener(); - hostNameInput.setText(remoteEnvURL.hasDefaultHostName() ? StringUtils.EMPTY : remoteEnvURL.getHost()); - portInput.setText(remoteEnvURL.getPort()); - webAppNameInput.setText(remoteEnvURL.getWeb()); - servletNameInput.setText(remoteEnvURL.getServlet()); + hostNameInput.setText(remoteWorkspaceURL.hasDefaultHostName() ? StringUtils.EMPTY : remoteWorkspaceURL.getHost()); + portInput.setText(remoteWorkspaceURL.getPort()); + webAppNameInput.setText(remoteWorkspaceURL.getWeb()); + servletNameInput.setText(remoteWorkspaceURL.getServlet()); enableSubDocListener(); } @@ -601,11 +600,11 @@ public class RemoteEnvPane extends BasicBeanPane { String port = portInput.getText(); String web = webAppNameInput.getText(); String servlet = servletNameInput.getText(); - remoteEnvURL.setHttps(isHttps); - remoteEnvURL.setHost(host); - remoteEnvURL.setPort(port); - remoteEnvURL.setWeb(web); - remoteEnvURL.setServlet(servlet); + remoteWorkspaceURL.setHttps(isHttps); + remoteWorkspaceURL.setHost(host); + remoteWorkspaceURL.setPort(port); + remoteWorkspaceURL.setWeb(web); + remoteWorkspaceURL.setServlet(servlet); } @@ -617,10 +616,10 @@ public class RemoteEnvPane extends BasicBeanPane { } private void actionURLInputChange() { - remoteEnvURL = new RemoteEnvURL(remoteEnvURLInput.getText()); + remoteWorkspaceURL = new RemoteWorkspaceURL(remoteEnvURLInput.getText()); fillIndividualField(); - httpsCheckbox.setSelected(remoteEnvURL.getHttps()); + httpsCheckbox.setSelected(remoteWorkspaceURL.getHttps()); boolean isHttps = httpsCheckbox.isSelected(); DesignerEnvManager.getEnvManager().setHttps(isHttps); fileChooserButton.setEnabled(isHttps); diff --git a/designer-base/src/main/java/com/fr/env/RemoteEnvURL.java b/designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java similarity index 90% rename from designer-base/src/main/java/com/fr/env/RemoteEnvURL.java rename to designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java index 717dc0584..069541f35 100644 --- a/designer-base/src/main/java/com/fr/env/RemoteEnvURL.java +++ b/designer-base/src/main/java/com/fr/env/RemoteWorkspaceURL.java @@ -8,7 +8,7 @@ import java.util.Objects; /** * @author yaohwu */ -public class RemoteEnvURL implements FCloneable { +public class RemoteWorkspaceURL implements FCloneable { /** * 默认 hostname @@ -29,8 +29,8 @@ public class RemoteEnvURL implements FCloneable { private static final String HTTPS = "https://"; private static final String HTTP = "http://"; - public static final RemoteEnvURL DEFAULT_URL = - new RemoteEnvURL( + public static final RemoteWorkspaceURL DEFAULT_URL = + new RemoteWorkspaceURL( false, DEFAULT_HOST_NAME, DEFAULT_PORT, @@ -45,12 +45,12 @@ public class RemoteEnvURL implements FCloneable { /** - * 解析 url 字符串 生成 RemoteEnvURL 对象 + * 解析 url 字符串 生成 RemoteWorkspaceURL 对象 * url 字符串格式 (http(s)://)host(:port)/+web/+servlet/+(others) * * @param url x:x/x/x/x */ - public RemoteEnvURL(String url) { + public RemoteWorkspaceURL(String url) { // 没有写协议名称 默认 使用 http 协议 if (!url.startsWith(HTTPS) && !url.startsWith(HTTP)) { @@ -102,12 +102,12 @@ public class RemoteEnvURL implements FCloneable { return DEFAULT_HOST_NAME.equals(host); } - public static RemoteEnvURL createDefaultURL() { + public static RemoteWorkspaceURL createDefaultURL() { return DEFAULT_URL.clone(); } - public RemoteEnvURL(boolean isHttps, String host, String port, String web, String servlet) { + public RemoteWorkspaceURL(boolean isHttps, String host, String port, String web, String servlet) { this.isHttps = isHttps; this.host = host != null ? host.trim() : StringUtils.EMPTY; this.port = port != null ? port.trim() : StringUtils.EMPTY; @@ -172,7 +172,7 @@ public class RemoteEnvURL implements FCloneable { if (o == null || getClass() != o.getClass()) { return false; } - RemoteEnvURL that = (RemoteEnvURL) o; + RemoteWorkspaceURL that = (RemoteWorkspaceURL) o; return isHttps == that.isHttps && Objects.equals(host, that.host) && Objects.equals(port, that.port) && @@ -188,7 +188,7 @@ public class RemoteEnvURL implements FCloneable { @Override public String toString() { - return "RemoteEnvURL{" + + return "RemoteWorkspaceURL{" + "isHttps=" + isHttps + ", host='" + host + '\'' + ", port='" + port + '\'' + @@ -198,10 +198,10 @@ public class RemoteEnvURL implements FCloneable { } @Override - public RemoteEnvURL clone() { - RemoteEnvURL cloned; + public RemoteWorkspaceURL clone() { + RemoteWorkspaceURL cloned; try { - cloned = (RemoteEnvURL) super.clone(); + cloned = (RemoteWorkspaceURL) super.clone(); return cloned; } catch (CloneNotSupportedException e) { // this shouldn't happen, since we are Cloneable diff --git a/designer-base/src/test/java/com/fr/env/RemoteEnvURLTest.java b/designer-base/src/test/java/com/fr/env/RemoteEnvURLTest.java index f86720fc8..2c6a0ab39 100644 --- a/designer-base/src/test/java/com/fr/env/RemoteEnvURLTest.java +++ b/designer-base/src/test/java/com/fr/env/RemoteEnvURLTest.java @@ -14,71 +14,71 @@ public class RemoteEnvURLTest { public void testURLParser() { String a; - RemoteEnvURL b; + RemoteWorkspaceURL b; // https or http begin a = "www.baidu.com:9090/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); Assert.assertFalse(b.getHttps()); a = "http://www.baidu.com:9090/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); Assert.assertFalse(b.getHttps()); a = "https://www.baidu.com:9090/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); Assert.assertTrue(b.getHttps()); // https or http end // host begin a = "https://www.baidu.com/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("www.baidu.com", b.getHost()); a = "https://baidu.com/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("baidu.com", b.getHost()); a = "https://192.168.1/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("192.168.1", b.getHost()); a = "https://中文·o((⊙﹏⊙))o囖/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("中文·o((⊙﹏⊙))o囖", b.getHost()); a = "https://a.b.c.d.e.f/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("a.b.c.d.e.f", b.getHost()); // host end //port begin a = "https://www.baidu.com:9090/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("9090", b.getPort()); a = "https://www.baidu.com:/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getPort()); a = "https://www.baidu.com/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getPort()); a = "https://www.baidu.com:kk/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("kk", b.getPort()); a = "https://www.baidu.com:中文·o((⊙﹏⊙))o囖/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("中文·o((⊙﹏⊙))o囖", b.getPort()); a = "https://www.baidu.com:中文·o((⊙﹏⊙))o囖"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("中文·o((⊙﹏⊙))o囖", b.getPort()); a = "https://www.baidu.com:中文·o((⊙﹏⊙))o囖///////"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("中文·o((⊙﹏⊙))o囖", b.getPort()); //port end @@ -86,109 +86,109 @@ public class RemoteEnvURLTest { //web begin a = "https://www.baidu.com:9090///"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getWeb()); a = "https://www.baidu.com:9090"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getWeb()); a = "https://www.baidu.com:9090/"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getWeb()); a = "https://www.baidu.com:9090///web///servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("web", b.getWeb()); a = "https://www.baidu.com:9090/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("web", b.getWeb()); a = "https://www.baidu.com:9090/中文·o((⊙﹏⊙))o囖/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("中文·o((⊙﹏⊙))o囖", b.getWeb()); a = "https://www.baidu.com:9090/web///servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("web", b.getWeb()); a = "https://www.baidu.com:9090///web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("web", b.getWeb()); //web end //servlet begin a = "https://www.baidu.com:9090///web////servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("servlet", b.getServlet()); a = "https://www.baidu.com:9090"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getServlet()); a = "https://www.baidu.com:9090/"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getServlet()); a = "https://www.baidu.com:9090//"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getServlet()); a = "https://www.baidu.com:9090//web"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getServlet()); a = "https://www.baidu.com:9090//web//"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getServlet()); a = "https://www.baidu.com:9090//web/"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getServlet()); a = "https://www.baidu.com:9090//web//"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getServlet()); a = "https://www.baidu.com:9090//web/a/"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("a", b.getServlet()); a = "https://www.baidu.com:9090//web/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("a", b.getServlet()); a = "https://www.baidu.com:9090//web/a//"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("a", b.getServlet()); a = "https://www.baidu.com:9090//web/中文·o((⊙﹏⊙))o囖//"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("中文·o((⊙﹏⊙))o囖", b.getServlet()); a = "https://www.baidu.com//web//"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("", b.getServlet()); a = "https://www.baidu.com//web/a/"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("a", b.getServlet()); a = "https://www.baidu.com//web/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("a", b.getServlet()); a = "https://www.baidu.com//web/a//"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); assertEquals("a", b.getServlet()); // servlet end //others begin a = "https://www.baidu.com/web/servlet/ahttps://www.baidu.com/web/servlet/a"; - b = new RemoteEnvURL(a); + b = new RemoteWorkspaceURL(a); Assert.assertTrue(b.getHttps()); assertEquals("www.baidu.com", b.getHost()); assertEquals("", b.getPort()); From 4a0bb32a04227e1bff56876e1b0af3638a3b8fa2 Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Thu, 26 Jul 2018 15:27:07 +0800 Subject: [PATCH 09/38] =?UTF-8?q?REPORT-9407=20=E3=80=9010.0=E4=B8=80?= =?UTF-8?q?=E8=BD=AE=E5=9B=9E=E5=BD=92=E3=80=91=E8=BF=9C=E7=A8=8B=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=97=B6alphafine=E6=90=9C=E7=B4=A2=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/impl/FileSearchManager.java | 187 ++++-------------- 1 file changed, 34 insertions(+), 153 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index ea32a4427..b3aa48d18 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.base.FRContext; +import com.fr.base.extension.FileExtension; import com.fr.design.DesignerEnvManager; import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.AlphaFineHelper; @@ -11,21 +12,11 @@ import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider; import com.fr.file.filetree.FileNode; import com.fr.general.ComparatorUtils; - +import com.fr.general.Inter; import com.fr.json.JSONObject; -import com.fr.log.FineLoggerFactory; -import com.fr.stable.StableUtils; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; -import com.fr.workspace.WorkContext; -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.List; /** * Created by XiaXiang on 2017/3/27. @@ -40,7 +31,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { private SearchResult lessModelList; private SearchResult moreModelList; private String searchText; - private List fileNodes = null; + private FileNode[] fileNodes = null; //停止搜索 private boolean stopSearch = false; //隐藏的搜索功能,可根据特殊的字符标记判断搜索分类 @@ -58,9 +49,6 @@ public class FileSearchManager implements AlphaFineSearchProvider { return instance; } - public synchronized static void init() { - - } /** * 根据文件路径获取文件模型 @@ -81,55 +69,55 @@ public class FileSearchManager implements AlphaFineSearchProvider { this.moreModelList = new SearchResult(); this.searchText = dealWithSearchText(searchText); if (StringUtils.isBlank(this.searchText) || ComparatorUtils.equals(this.searchText, DS_NAME)) { - lessModelList.add(new MoreModel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Templates"))); + lessModelList.add(new MoreModel(Inter.getLocText("FR-Designer_Templates"))); return lessModelList; } - fileNodes = new ArrayList<>(); - fileNodes = listTpl(ProjectConstants.REPORTLETS_NAME, true); AlphaFineHelper.checkCancel(); + fileNodes = FRContext.getFileNodes().list(ProjectConstants.REPORTLETS_NAME, new FileExtension[]{FileExtension.CPT, FileExtension.FRM}, true); isContainCpt = true; isContainFrm = true; - doSearch(this.searchText, true); - if (stopSearch) { - lessModelList.add(0, new MoreModel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Templates"), com.fr.design.i18n.Toolkit.i18nText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE)); - lessModelList.addAll(filterModelList.subList(0, AlphaFineConstants.SHOW_SIZE)); - stopSearch = false; - return this.lessModelList; - } + doSearch(this.searchText); if (filterModelList.isEmpty()) { return new SearchResult(); + } else if (filterModelList.size() < AlphaFineConstants.SHOW_SIZE + 1) { + lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates"))); + lessModelList.addAll(filterModelList); + } else { + lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE)); + lessModelList.addAll(filterModelList.subList(0, AlphaFineConstants.SHOW_SIZE)); + moreModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size())); + } - lessModelList.add(0, new MoreModel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Templates"), com.fr.design.i18n.Toolkit.i18nText("FR-Designer_AlphaFine_ShowAll"), false, CellType.FILE)); - lessModelList.addAll(filterModelList); return lessModelList; } @Override public SearchResult getMoreSearchResult(String searchText) { - if (moreModelList != null && !moreModelList.isEmpty()) { - return moreModelList; - } - this.filterModelList = new SearchResult(); - this.moreModelList = new SearchResult(); - AlphaFineHelper.checkCancel(); - isContainCpt = true; - isContainFrm = true; - doSearch(this.searchText, false); - moreModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size())); return moreModelList; } - private void doSearch(String searchText, boolean needMore) { - for (FileNode node : fileNodes) { - boolean isAlreadyContain = false; - isAlreadyContain = searchFile(searchText, node, isAlreadyContain, needMore); - if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainFileContent() && node.getLock() == null) { - searchFileContent(searchText, node, isAlreadyContain, needMore); + private void doSearch(String searchText) { + if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainTemplate()) { + for (FileNode node : fileNodes) { + if (node.getName().toLowerCase().contains(searchText)) { + FileModel model = new FileModel(node.getName(), node.getEnvPath()); + if (!AlphaFineHelper.getFilterResult().contains(model)) { + AlphaFineHelper.checkCancel(); + filterModelList.add(model); + } + } + } - if (filterModelList.size() > AlphaFineConstants.SHOW_SIZE && stopSearch) { - return; + } + if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainFileContent()) { + FileNode[] fileNodes = FRContext.getFileNodes().filterFiles(searchText, ProjectConstants.REPORTLETS_NAME, new FileExtension[]{FileExtension.CPT, FileExtension.FRM}, true); + for (FileNode node : fileNodes) { + FileModel model = new FileModel(node.getName(), node.getEnvPath()); + if (!AlphaFineHelper.getFilterResult().contains(model) && !filterModelList.contains(model)) { + AlphaFineHelper.checkCancel(); + filterModelList.add(model); + } } - } } @@ -144,113 +132,6 @@ public class FileSearchManager implements AlphaFineSearchProvider { return searchText; } - /** - * 搜索文件内容 - * - * @param searchText - * @param node - * @param isAlreadyContain - */ - private void searchFileContent(String searchText, FileNode node, boolean isAlreadyContain, boolean needMore) { - try { - InputStream inputStream = new ByteArrayInputStream(WorkContext.getWorkResource().readFully(StableUtils.pathJoin(ProjectConstants.REPORTLETS_NAME, node.getEnvPath().substring(ProjectConstants.REPORTLETS_NAME.length() + 1)))); - InputStreamReader isr = new InputStreamReader(inputStream, "UTF-8"); - BufferedReader reader = new BufferedReader(isr); - String line; - int columnNumber; - boolean isFoundInContent = false; - while ((line = reader.readLine()) != null) { - columnNumber = line.toLowerCase().indexOf(searchText); - if (columnNumber != -1) { - isFoundInContent = true; - break; - } - } - if (isFoundInContent && !isAlreadyContain) { - FileModel model = new FileModel(node.getName(), node.getEnvPath()); - if (!AlphaFineHelper.getFilterResult().contains(model)) { - AlphaFineHelper.checkCancel(); - filterModelList.add(model); - } - if (this.filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) { - stopSearch = true; - } - } - isr.close(); - reader.close(); - } catch (Exception e) { - FineLoggerFactory.getLogger().error("file read error: " + e.getMessage()); - } - } - - /** - * 搜索模板 - * - * @param searchText - * @param node - * @param isAlreadyContain - * @return - */ - private boolean searchFile(String searchText, FileNode node, boolean isAlreadyContain, boolean needMore) { - if (DesignerEnvManager.getEnvManager().getAlphaFineConfigManager().isContainTemplate()) { - if (node.getName().toLowerCase().contains(searchText)) { - FileModel model = new FileModel(node.getName(), node.getEnvPath()); - if (!AlphaFineHelper.getFilterResult().contains(model)) { - AlphaFineHelper.checkCancel(); - filterModelList.add(model); - } - if (filterModelList.size() > AlphaFineConstants.SHOW_SIZE && needMore) { - stopSearch = true; - } - isAlreadyContain = true; - } - } - return isAlreadyContain; - } - - /** - * 获取工作目录下所有符合要求的模板 - * - * @param rootFilePath - * @param recurse - * @return - */ - private List listTpl(String rootFilePath, boolean recurse) { - List fileNodeList = new ArrayList(); - try { - listAll(rootFilePath, fileNodeList, recurse); - } catch (Exception e) { - FRContext.getLogger().error("file search error: " + e.getMessage(), e); - } - return fileNodeList; - } - - /** - * 获取当前工作目录下所有模板 - * - * @param rootFilePath - * @param nodeList - * @param recurse - * @throws Exception - */ - private void listAll(String rootFilePath, List nodeList, boolean recurse) throws Exception { - - FileNode[] fns = FRContext.getFileNodes().list(rootFilePath); - for (int i = 0; i < fns.length; i++) { - FileNode fileNode = fns[i]; - if (fileNode.isDirectory()) { - if (recurse) { - listAll(rootFilePath + File.separator + fns[i].getName(), nodeList, true); - } else { - nodeList.add(fns[i]); - } - } else if (isContainCpt && fileNode.isFileType("cpt")) { - nodeList.add(fileNode); - } else if (isContainFrm && fileNode.isFileType("frm")) { - nodeList.add(fileNode); - } - } - } /** * 是否包含cpt From 3a202903cc2ee3e36119ce243693e1b3a8eda81a Mon Sep 17 00:00:00 2001 From: "yaoh.wu" Date: Thu, 26 Jul 2018 17:37:50 +0800 Subject: [PATCH 10/38] =?UTF-8?q?REPORT-7941=20=E5=AD=90=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E6=9C=89=E5=85=A8=E9=83=A8=E6=9D=83=E9=99=90=E7=88=B6=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E9=83=A8=E5=88=86=E6=9D=83=E9=99=90=E5=9C=BA=E6=99=AF?= =?UTF-8?q?=E6=97=B6=E6=98=BE=E7=A4=BA=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gui/itree/filetree/TemplateFileTree.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java index 70f29e48e..4ac6141c7 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java @@ -222,22 +222,18 @@ public class TemplateFileTree extends EnvFileTree { String fileName = fileNode.getEnvPath(); String[] auPaths = auPath.split(CoreConstants.SEPARATOR); String[] nodePaths = fileName.split(CoreConstants.SEPARATOR); - - if (auPaths.length == nodePaths.length) { + // 待判断目录是有权限目录或者有权限目录的子目录,全部权限 + if (auPaths.length <= nodePaths.length) { for (int i = 0; i < auPaths.length; i++) { if (!auPaths[i].equals(nodePaths[i])) { return false; } } return fileNode.isDirectory(); - } else { - int len = Math.min(auPaths.length, nodePaths.length); - for (int i = 0; i < len; i++) { - if (!auPaths[i].equals(nodePaths[i])) { - return false; - } - } - return true; + } + // 其他情况半权限 + else { + return false; } } From b5a17d313e4cc0d49784db7aef8d9e9b3ce68a8f Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Thu, 26 Jul 2018 19:10:18 +0800 Subject: [PATCH 11/38] rt --- .../alphafine/search/manager/impl/FileSearchManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index b3aa48d18..0c2ac63ae 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -14,6 +14,7 @@ import com.fr.file.filetree.FileNode; import com.fr.general.ComparatorUtils; import com.fr.general.Inter; import com.fr.json.JSONObject; +import com.fr.locale.InterProviderFactory; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; @@ -33,7 +34,6 @@ public class FileSearchManager implements AlphaFineSearchProvider { private String searchText; private FileNode[] fileNodes = null; //停止搜索 - private boolean stopSearch = false; //隐藏的搜索功能,可根据特殊的字符标记判断搜索分类 private boolean isContainCpt = true; private boolean isContainFrm = true; @@ -80,10 +80,10 @@ public class FileSearchManager implements AlphaFineSearchProvider { if (filterModelList.isEmpty()) { return new SearchResult(); } else if (filterModelList.size() < AlphaFineConstants.SHOW_SIZE + 1) { - lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates"))); + lessModelList.add(0, new MoreModel(InterProviderFactory.getProvider().getLocText("FR-Designer_Templates"))); lessModelList.addAll(filterModelList); } else { - lessModelList.add(0, new MoreModel(Inter.getLocText("FR-Designer_Templates"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE)); + lessModelList.add(0, new MoreModel(InterProviderFactory.getProvider().getLocText("FR-Designer_Templates"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE)); lessModelList.addAll(filterModelList.subList(0, AlphaFineConstants.SHOW_SIZE)); moreModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size())); From 3871b1d1031a7f140541da268dbd8b2030fae765 Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Thu, 26 Jul 2018 19:27:23 +0800 Subject: [PATCH 12/38] rt --- .../alphafine/search/manager/impl/FileSearchManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index 0c2ac63ae..c2b5aa547 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -33,6 +33,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { private SearchResult moreModelList; private String searchText; private FileNode[] fileNodes = null; + //停止搜索 //隐藏的搜索功能,可根据特殊的字符标记判断搜索分类 private boolean isContainCpt = true; @@ -69,7 +70,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { this.moreModelList = new SearchResult(); this.searchText = dealWithSearchText(searchText); if (StringUtils.isBlank(this.searchText) || ComparatorUtils.equals(this.searchText, DS_NAME)) { - lessModelList.add(new MoreModel(Inter.getLocText("FR-Designer_Templates"))); + lessModelList.add(new MoreModel(InterProviderFactory.getProvider().getLocText("FR-Designer_Templates"))); return lessModelList; } AlphaFineHelper.checkCancel(); From 55a6f0a622c113446f00574dd17f91530189a027 Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Thu, 26 Jul 2018 19:57:18 +0800 Subject: [PATCH 13/38] =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/manager/impl/FileSearchManager.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java index c2b5aa547..5262046a8 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/FileSearchManager.java @@ -12,9 +12,7 @@ import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider; import com.fr.file.filetree.FileNode; import com.fr.general.ComparatorUtils; -import com.fr.general.Inter; import com.fr.json.JSONObject; -import com.fr.locale.InterProviderFactory; import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; @@ -33,7 +31,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { private SearchResult moreModelList; private String searchText; private FileNode[] fileNodes = null; - + //停止搜索 //隐藏的搜索功能,可根据特殊的字符标记判断搜索分类 private boolean isContainCpt = true; @@ -70,7 +68,7 @@ public class FileSearchManager implements AlphaFineSearchProvider { this.moreModelList = new SearchResult(); this.searchText = dealWithSearchText(searchText); if (StringUtils.isBlank(this.searchText) || ComparatorUtils.equals(this.searchText, DS_NAME)) { - lessModelList.add(new MoreModel(InterProviderFactory.getProvider().getLocText("FR-Designer_Templates"))); + lessModelList.add(new MoreModel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Templates"))); return lessModelList; } AlphaFineHelper.checkCancel(); @@ -81,10 +79,10 @@ public class FileSearchManager implements AlphaFineSearchProvider { if (filterModelList.isEmpty()) { return new SearchResult(); } else if (filterModelList.size() < AlphaFineConstants.SHOW_SIZE + 1) { - lessModelList.add(0, new MoreModel(InterProviderFactory.getProvider().getLocText("FR-Designer_Templates"))); + lessModelList.add(0, new MoreModel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Templates"))); lessModelList.addAll(filterModelList); } else { - lessModelList.add(0, new MoreModel(InterProviderFactory.getProvider().getLocText("FR-Designer_Templates"), Inter.getLocText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE)); + lessModelList.add(0, new MoreModel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Templates"), com.fr.design.i18n.Toolkit.i18nText("FR-Designer_AlphaFine_ShowAll"), true, CellType.FILE)); lessModelList.addAll(filterModelList.subList(0, AlphaFineConstants.SHOW_SIZE)); moreModelList.addAll(filterModelList.subList(AlphaFineConstants.SHOW_SIZE, filterModelList.size())); From 2f4dd467b099fcac9a94c4999884d3bdf2e79732 Mon Sep 17 00:00:00 2001 From: richie Date: Fri, 27 Jul 2018 10:27:44 +0800 Subject: [PATCH 14/38] =?UTF-8?q?CORE-116=20=E4=BB=A3=E7=A0=81=E8=A7=84?= =?UTF-8?q?=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/data/datapane/TableDataPaneListPane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java index 75f318208..d5e52586d 100644 --- a/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java +++ b/designer-base/src/main/java/com/fr/design/data/datapane/TableDataPaneListPane.java @@ -103,7 +103,7 @@ public class TableDataPaneListPane extends JListControlPane implements TableData } private boolean isIncludeUnderline(String name) { - return ComparatorUtils.equals(name.indexOf(StoreProcedureAssist.GROUP_MARKER), -1) ? false : true; + return name.contains(StoreProcedureAssist.GROUP_MARKER); } /** From 73eab99c2c2fb514e588dd27925a010e5c3c29f9 Mon Sep 17 00:00:00 2001 From: richie Date: Fri, 27 Jul 2018 11:43:56 +0800 Subject: [PATCH 15/38] =?UTF-8?q?REPORT-9133=20=E5=A1=AB=E6=8A=A5=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E9=9D=A2=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/gui/controlpane/ObjectJControlPane.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/controlpane/ObjectJControlPane.java b/designer-base/src/main/java/com/fr/design/gui/controlpane/ObjectJControlPane.java index 05d7019d1..2fd680a9c 100644 --- a/designer-base/src/main/java/com/fr/design/gui/controlpane/ObjectJControlPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/controlpane/ObjectJControlPane.java @@ -23,7 +23,10 @@ public abstract class ObjectJControlPane extends JListControlPane { @Override protected BasicBeanPane createPaneByCreators(NameableCreator creator) { - return Reflect.on(creator.getUpdatePane()).create(object).get(); + try { + return Reflect.on(creator.getUpdatePane()).create(object).get(); + } catch (Exception e) { + return super.createPaneByCreators(creator); + } } - } \ No newline at end of file From 24020286d238a0bb560b5cd5fdaa1481f9d093ee Mon Sep 17 00:00:00 2001 From: rinoux Date: Fri, 27 Jul 2018 11:48:36 +0800 Subject: [PATCH 16/38] =?UTF-8?q?REPORT-10077=20=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E6=A8=A1=E7=89=88=E6=96=B0=E5=BB=BA=E6=96=87=E4=BB=B6=E5=A4=B9?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer-base/src/main/java/com/fr/file/FileNodeFILE.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/file/FileNodeFILE.java b/designer-base/src/main/java/com/fr/file/FileNodeFILE.java index 666bb4e61..2575e2864 100644 --- a/designer-base/src/main/java/com/fr/file/FileNodeFILE.java +++ b/designer-base/src/main/java/com/fr/file/FileNodeFILE.java @@ -219,7 +219,7 @@ public class FileNodeFILE implements FILE { } try { - return WorkContext.getWorkResource().createFile(StableUtils.pathJoin(node.getEnvPath(), name)); + return WorkContext.getWorkResource().createDirectory(StableUtils.pathJoin(node.getEnvPath(), name)); } catch (Exception e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); return false; From f51b6afc565551fb28c39d37acc90da950436769 Mon Sep 17 00:00:00 2001 From: plough Date: Fri, 27 Jul 2018 11:51:33 +0800 Subject: [PATCH 17/38] =?UTF-8?q?REPORT-10084=20=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E8=A1=A8=E5=8D=95=E6=B0=B4=E5=8D=B0=E8=B6=85=E8=BF=87?= =?UTF-8?q?=E7=94=BB=E5=B8=83=EF=BC=8C=E5=88=B0=E4=BA=86=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/mainframe/FormDesignerUI.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java index f0f3e17d6..0f1ccf33c 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java @@ -109,8 +109,6 @@ public class FormDesignerUI extends ComponentUI { // 当前正在添加的组件 paintAddingBean(g, addingModel); } - - paintWatermark((Graphics2D) g); } // 绘制水印 @@ -400,6 +398,7 @@ public class FormDesignerUI extends ComponentUI { // g.drawImage(img,-designer.getArea().getHorizontalValue(),-designer.getArea().getVerticalValue() + designer.getParaHeight(), (int) (parent.getSize().width*time + designer.getArea().getHorizontalValue()), (int) (parent.getSize().height*time + designer.getArea().getVerticalValue()),null); designer.paintContent(clipg); + paintWatermark((Graphics2D) clipg); clipg.dispose(); // 恢复双缓冲 From 7760d8331a403e744dfb6a0deb54595d9ef05821 Mon Sep 17 00:00:00 2001 From: zack Date: Fri, 27 Jul 2018 15:50:15 +0800 Subject: [PATCH 18/38] =?UTF-8?q?REPORT-10055=20=E3=80=9010.0=E6=8E=A7?= =?UTF-8?q?=E4=BB=B6=E3=80=91=E5=AE=89=E8=A3=85=E7=BC=A9=E8=BF=9B=E6=AF=94?= =?UTF-8?q?=E4=BE=8B=E6=8E=A7=E5=88=B6=E6=8E=A7=E4=BB=B6=E5=90=8E=E6=97=A0?= =?UTF-8?q?=E6=95=88=E6=8F=92=E4=BB=B6=E4=B8=8D=E8=83=BD=E5=8D=B3=E6=97=B6?= =?UTF-8?q?=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/style/AlignmentPane.java | 40 +++++++++++++++---- .../com/fr/design/condition/PaddingPane.java | 24 ++++++++++- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/style/AlignmentPane.java b/designer-base/src/main/java/com/fr/design/gui/style/AlignmentPane.java index 2f1f458fa..8cc752cb1 100644 --- a/designer-base/src/main/java/com/fr/design/gui/style/AlignmentPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/style/AlignmentPane.java @@ -21,14 +21,25 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.general.ComparatorUtils; - +import com.fr.general.GeneralContext; import com.fr.plugin.ExtraClassManager; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.manage.PluginFilter; +import com.fr.plugin.observer.PluginEvent; +import com.fr.plugin.observer.PluginEventListener; import com.fr.report.fun.VerticalTextProcessor; import com.fr.report.fun.impl.DefaultVerticalTextProcessor; import com.fr.stable.Constants; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JPanel; +import javax.swing.SwingConstants; +import java.awt.BorderLayout; +import java.awt.CardLayout; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.FlowLayout; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; @@ -103,13 +114,28 @@ public class AlignmentPane extends AbstractBasicStylePane implements GlobalNameO initOtherComponent(); initAllNames(); - indentationUnitProcessor = ExtraDesignClassManager.getInstance().getSingle(IndentationUnitProcessor.MARK_STRING); - if (null == indentationUnitProcessor) { - indentationUnitProcessor = new DefaultIndentationUnitProcessor(); + GeneralContext.listenPluginRunningChanged(new PluginEventListener() { + + @Override + public void on(PluginEvent event) { + refreshIndentationUnit(); + } + }, new PluginFilter() { + + @Override + public boolean accept(PluginContext context) { + return context.contain(IndentationUnitProcessor.MARK_STRING); + } + }); + refreshIndentationUnit(); + } + private void refreshIndentationUnit() { + this.indentationUnitProcessor = ExtraDesignClassManager.getInstance().getSingle(IndentationUnitProcessor.MARK_STRING); + if (null == this.indentationUnitProcessor) { + this.indentationUnitProcessor = new DefaultIndentationUnitProcessor(); } } - private void initOtherComponent() { hPaneContainer.add(hAlignmentPane); vPaneContainer.add(vAlignmentPane); diff --git a/designer-realize/src/main/java/com/fr/design/condition/PaddingPane.java b/designer-realize/src/main/java/com/fr/design/condition/PaddingPane.java index c94f8c7a0..a3c7fe69a 100644 --- a/designer-realize/src/main/java/com/fr/design/condition/PaddingPane.java +++ b/designer-realize/src/main/java/com/fr/design/condition/PaddingPane.java @@ -7,11 +7,15 @@ import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UIBasicSpinner; import com.fr.design.gui.style.DefaultIndentationUnitProcessor; import com.fr.design.utils.gui.GUICoreUtils; - +import com.fr.general.GeneralContext; +import com.fr.plugin.context.PluginContext; +import com.fr.plugin.manage.PluginFilter; +import com.fr.plugin.observer.PluginEvent; +import com.fr.plugin.observer.PluginEventListener; import com.fr.report.cell.cellattr.highlight.HighlightAction; import com.fr.report.cell.cellattr.highlight.PaddingHighlightAction; -import javax.swing.*; +import javax.swing.SpinnerNumberModel; /** * @author richie @@ -45,7 +49,23 @@ public class PaddingPane extends ConditionAttrSingleConditionPane Date: Fri, 27 Jul 2018 17:19:46 +0800 Subject: [PATCH 19/38] =?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 --- .../java/com/fr/design/gui/style/AlignmentPane.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/style/AlignmentPane.java b/designer-base/src/main/java/com/fr/design/gui/style/AlignmentPane.java index 8cc752cb1..163fe922d 100644 --- a/designer-base/src/main/java/com/fr/design/gui/style/AlignmentPane.java +++ b/designer-base/src/main/java/com/fr/design/gui/style/AlignmentPane.java @@ -20,13 +20,14 @@ import com.fr.design.gui.ispinner.UISpinner; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; +import com.fr.event.EventDispatcher; import com.fr.general.ComparatorUtils; -import com.fr.general.GeneralContext; import com.fr.plugin.ExtraClassManager; import com.fr.plugin.context.PluginContext; import com.fr.plugin.manage.PluginFilter; import com.fr.plugin.observer.PluginEvent; import com.fr.plugin.observer.PluginEventListener; +import com.fr.plugin.observer.PluginEventType; import com.fr.report.fun.VerticalTextProcessor; import com.fr.report.fun.impl.DefaultVerticalTextProcessor; import com.fr.stable.Constants; @@ -114,7 +115,13 @@ public class AlignmentPane extends AbstractBasicStylePane implements GlobalNameO initOtherComponent(); initAllNames(); - GeneralContext.listenPluginRunningChanged(new PluginEventListener() { + addPluginListeners(PluginEventType.AfterRun); + addPluginListeners(PluginEventType.AfterStop); + refreshIndentationUnit(); + } + + private void addPluginListeners(PluginEventType type) { + EventDispatcher.listen(type, new PluginEventListener() { @Override public void on(PluginEvent event) { @@ -127,7 +134,6 @@ public class AlignmentPane extends AbstractBasicStylePane implements GlobalNameO return context.contain(IndentationUnitProcessor.MARK_STRING); } }); - refreshIndentationUnit(); } private void refreshIndentationUnit() { this.indentationUnitProcessor = ExtraDesignClassManager.getInstance().getSingle(IndentationUnitProcessor.MARK_STRING); From 37e1ddadc244ac8b0e1ccb7a81e7754f64e079ec Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Sun, 29 Jul 2018 18:25:27 +0800 Subject: [PATCH 20/38] =?UTF-8?q?REPORT-9819=20=E3=80=9010.0=E4=BA=8C?= =?UTF-8?q?=E8=BD=AE=E5=9B=9E=E5=BD=92=E3=80=91alphafine=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=89=93=E5=BC=80=E5=90=8E=EF=BC=8C=E5=86=8D?= =?UTF-8?q?=E6=AC=A1=E6=90=9C=E7=B4=A2=E4=BC=9A=E5=A2=9E=E5=8A=A0=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E9=87=8D=E5=A4=8D=E6=A8=A1=E6=9D=BF=E7=9A=84=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/component/AlphaFineDialog.java | 41 +++++++++++++++---- .../manager/impl/RecentSearchManager.java | 21 ++++++---- 2 files changed, 46 insertions(+), 16 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 b901f7085..9dfaa5bba 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 @@ -28,10 +28,11 @@ import com.fr.design.mainframe.alphafine.search.manager.impl.FileSearchManager; import com.fr.design.mainframe.alphafine.search.manager.impl.PluginSearchManager; import com.fr.design.mainframe.alphafine.search.manager.impl.RecentSearchManager; import com.fr.design.mainframe.alphafine.search.manager.impl.RecommendSearchManager; +import com.fr.design.mainframe.errorinfo.ErrorInfoUploader; +import com.fr.design.mainframe.templateinfo.TemplateInfoCollector; import com.fr.form.main.Form; import com.fr.form.main.FormIO; import com.fr.general.ComparatorUtils; - import com.fr.general.http.HttpClient; import com.fr.io.TemplateWorkBookIO; import com.fr.io.exporter.ImageExporter; @@ -44,11 +45,28 @@ import com.fr.stable.StringUtils; import com.fr.stable.project.ProjectConstants; import javax.imageio.ImageIO; -import javax.swing.*; +import javax.swing.BorderFactory; +import javax.swing.DefaultListModel; +import javax.swing.ImageIcon; +import javax.swing.JList; +import javax.swing.JPanel; +import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; import javax.swing.event.DocumentEvent; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -import java.awt.*; +import java.awt.AWTEvent; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.Graphics; +import java.awt.Image; +import java.awt.Point; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.Window; import java.awt.event.AWTEventListener; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -761,11 +779,18 @@ public class AlphaFineDialog extends UIDialog { * * @param cellModel */ - private void saveLocalHistory(AlphaCellModel cellModel) { - RecentSearchManager searchManager = RecentSearchManager.getInstance(); - searchManager.addModel(storeText, cellModel, cellModel.getSearchCount() + 1); - sendDataToServer(storeText, cellModel); - + private void saveLocalHistory(final AlphaCellModel cellModel) { + 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(); + } + }); + sendThread.start(); } /** diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java index 68ae4578d..2f0b695b2 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java @@ -1,6 +1,7 @@ package com.fr.design.mainframe.alphafine.search.manager.impl; import com.fr.design.actions.UpdateAction; +import com.fr.design.mainframe.alphafine.AlphaFineConstants; import com.fr.design.mainframe.alphafine.CellType; import com.fr.design.mainframe.alphafine.cell.CellModelHelper; import com.fr.design.mainframe.alphafine.cell.model.ActionModel; @@ -9,7 +10,6 @@ import com.fr.design.mainframe.alphafine.cell.model.MoreModel; import com.fr.design.mainframe.alphafine.model.SearchResult; import com.fr.design.mainframe.alphafine.search.manager.fun.AlphaFineSearchProvider; import com.fr.design.mainframe.toolbar.UpdateActionManager; - import com.fr.json.JSONException; import com.fr.json.JSONObject; import com.fr.log.FineLoggerFactory; @@ -18,7 +18,7 @@ import com.fr.third.org.apache.lucene.analysis.Analyzer; import com.fr.third.org.apache.lucene.analysis.standard.StandardAnalyzer; import com.fr.third.org.apache.lucene.document.Document; import com.fr.third.org.apache.lucene.document.Field; -import com.fr.third.org.apache.lucene.document.IntField; +import com.fr.third.org.apache.lucene.document.LongField; import com.fr.third.org.apache.lucene.document.StringField; import com.fr.third.org.apache.lucene.index.DirectoryReader; import com.fr.third.org.apache.lucene.index.IndexReader; @@ -78,7 +78,7 @@ public class RecentSearchManager implements AlphaFineSearchProvider { if (recentModelList != null && recentModelList.size() > 0) { modelList.add(new MoreModel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_AlphaFine_Latest"))); } - modelList.addAll(recentModelList); + modelList.addAll(recentModelList.subList(0, AlphaFineConstants.LATEST_SHOW_SIZE)); return modelList; } @@ -126,15 +126,14 @@ public class RecentSearchManager implements AlphaFineSearchProvider { * * @param searchKey * @param cellModel - * @param searchCount */ - public void addModel(String searchKey, AlphaCellModel cellModel, int searchCount) { + public void addModel(String searchKey, AlphaCellModel cellModel) { try { initWriter(); Document doc = new Document(); doc.add(new StringField("searchKey", searchKey, Field.Store.YES)); doc.add(new StringField("cellModel", cellModel.ModelToJson().toString(), Field.Store.YES)); - doc.add(new IntField("searchCount", searchCount, Field.Store.YES)); + doc.add(new LongField("time", System.currentTimeMillis(), Field.Store.YES)); writeDoc(doc); } catch (JSONException e) { FineLoggerFactory.getLogger().error("add document error: " + e.getMessage()); @@ -170,12 +169,12 @@ public class RecentSearchManager implements AlphaFineSearchProvider { IndexSearcher searcher = new IndexSearcher(indexReader); //构建排序字段 SortField[] sortField = new SortField[1]; - sortField[0] = new SortField("searchCount", SortField.Type.INT, true); + sortField[0] = new SortField("time", SortField.Type.LONG, true); Sort sortKey = new Sort(sortField); String searchField = "searchKey"; Term term = new Term(searchField, key); Query query = new TermQuery(term); - TopFieldDocs docs = searcher.search(query, MAX_SIZE, sortKey); + TopFieldDocs docs = searcher.search(query, 100, sortKey); ScoreDoc[] scores = docs.scoreDocs; this.recentModelList = new SearchResult(); //遍历结果 @@ -186,9 +185,15 @@ public class RecentSearchManager implements AlphaFineSearchProvider { UpdateAction action = UpdateActionManager.getUpdateActionManager().getActionByName(model.getName()); if (action != null) { ((ActionModel) model).setAction(action); + if (recentModelList.contains(model)) { + continue; + } recentModelList.add(model); } } else { + if (recentModelList.contains(model)) { + continue; + } recentModelList.add(model); } From ba74e900f21df1d60e5fd4f47856aca86440cfd6 Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Sun, 29 Jul 2018 18:31:44 +0800 Subject: [PATCH 21/38] rt --- .../manager/impl/RecentSearchManager.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java index 2f0b695b2..5e42929e9 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java @@ -185,19 +185,11 @@ public class RecentSearchManager implements AlphaFineSearchProvider { UpdateAction action = UpdateActionManager.getUpdateActionManager().getActionByName(model.getName()); if (action != null) { ((ActionModel) model).setAction(action); - if (recentModelList.contains(model)) { - continue; - } - recentModelList.add(model); + addModel(model); } } else { - if (recentModelList.contains(model)) { - continue; - } - recentModelList.add(model); + addModel(model); } - - } } catch (Exception e) { FineLoggerFactory.getLogger().error("local search error: " + e.getMessage()); @@ -206,5 +198,11 @@ public class RecentSearchManager implements AlphaFineSearchProvider { return recentModelList; } + private void addModel(AlphaCellModel model) { + if (!recentModelList.contains(model)) { + recentModelList.add(model); + } + } + } From c0569eb29b23804d24e1ba1807d397cbbb3f91a0 Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Sun, 29 Jul 2018 18:33:05 +0800 Subject: [PATCH 22/38] rt --- .../alphafine/search/manager/impl/RecentSearchManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java index 5e42929e9..bb1d21ec8 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java @@ -44,7 +44,7 @@ import java.util.List; * Created by XiaXiang on 2018/1/22. */ public class RecentSearchManager implements AlphaFineSearchProvider { - private static final int MAX_SIZE = 3; + private static final int MAX_SIZE = 100; private static RecentSearchManager instance; IndexReader indexReader = null; IndexSearcher indexSearcher = null; @@ -174,7 +174,7 @@ public class RecentSearchManager implements AlphaFineSearchProvider { String searchField = "searchKey"; Term term = new Term(searchField, key); Query query = new TermQuery(term); - TopFieldDocs docs = searcher.search(query, 100, sortKey); + TopFieldDocs docs = searcher.search(query, MAX_SIZE, sortKey); ScoreDoc[] scores = docs.scoreDocs; this.recentModelList = new SearchResult(); //遍历结果 From 99244eb9ef0ac10aa9008748bb175fed566af410 Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 30 Jul 2018 09:59:49 +0800 Subject: [PATCH 23/38] =?UTF-8?q?REPORT-10049=E3=80=9010.0=E4=BA=8C?= =?UTF-8?q?=E8=BD=AE=E5=9B=9E=E5=BD=92=E3=80=91=E8=AE=BE=E8=AE=A1=E5=99=A8?= =?UTF-8?q?=E5=8F=B3=E4=B8=8A=E8=A7=92=E7=99=BB=E5=BD=95=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E9=87=8D=E5=90=AF=E4=BB=8D=E7=84=B6=E6=98=BE=E7=A4=BA=E6=9C=AA?= =?UTF-8?q?=E7=99=BB=E5=BD=95=EF=BC=8C=E6=89=93=E5=BC=80=E4=B8=80=E4=B8=8B?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E5=99=A8=E6=8F=92=E4=BB=B6=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=89=8D=E5=87=BA=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/mainframe/bbs/UserInfoPane.java | 30 ++++++------------- .../fr/start/module/DesignerActivator.java | 2 ++ 2 files changed, 11 insertions(+), 21 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoPane.java b/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoPane.java index d04e4aba1..f02142e1f 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoPane.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/bbs/UserInfoPane.java @@ -4,18 +4,14 @@ package com.fr.design.mainframe.bbs; import com.fr.base.FRContext; -import com.fr.config.BaseDBEnv; import com.fr.config.MarketConfig; import com.fr.design.DesignerEnvManager; import com.fr.design.constants.UIConstants; import com.fr.design.dialog.BasicPane; import com.fr.design.mainframe.DesignerContext; import com.fr.general.DateUtils; -import com.fr.general.GeneralContext; - -import com.fr.stable.EnvChangedListener; +import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; - import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; @@ -73,7 +69,6 @@ public class UserInfoPane extends BasicPane { this.userInfoLabel = new UserInfoLabel(this); this.markUnSignIn(); - addEnvChangedListener(); autoPushLoginDialog(); this.add(userInfoLabel, BorderLayout.CENTER); @@ -115,20 +110,13 @@ public class UserInfoPane extends BasicPane { return StringUtils.EMPTY; } - private void addEnvChangedListener() { - GeneralContext.addEnvChangedListener(new EnvChangedListener() { - @Override - public void envChanged() { - if (BaseDBEnv.isDBEnvAvailable()) { - String username = MarketConfig.getInstance().getBbsUsername(); - if (StringUtils.isEmpty(username)) { - markUnSignIn(); - } else { - markSignIn(username); - } - } - } - }); + public void updateBBSUserInfo(){ + String username = MarketConfig.getInstance().getBbsUsername(); + if (StringUtils.isEmpty(username)) { + markUnSignIn(); + } else { + markSignIn(username); + } } @@ -154,7 +142,7 @@ public class UserInfoPane extends BasicPane { return dayNew - dayOld; } } catch (ParseException e) { - FRContext.getLogger().error(e.getMessage()); + FineLoggerFactory.getLogger().error(e.getMessage()); } return 1; } diff --git a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java index 89a467443..4922f3db4 100644 --- a/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java +++ b/designer-realize/src/main/java/com/fr/start/module/DesignerActivator.java @@ -43,6 +43,7 @@ import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.WidgetToolBarPane; import com.fr.design.mainframe.actions.NewFormAction; import com.fr.design.mainframe.bbs.BBSGuestPane; +import com.fr.design.mainframe.bbs.UserInfoPane; import com.fr.design.mainframe.form.FormECCompositeProvider; import com.fr.design.mainframe.form.FormECDesignerProvider; import com.fr.design.mainframe.form.FormElementCaseDesigner; @@ -123,6 +124,7 @@ public class DesignerActivator extends Activator implements Prepare { preLoadPane(); loadLogAppender(); DesignerSocketIO.update(); + UserInfoPane.getInstance().updateBBSUserInfo(); } private void loadLogAppender() { From 1ed6a4d7e5d6cf2df7073846edc72976bc8b22c0 Mon Sep 17 00:00:00 2001 From: kerry Date: Mon, 30 Jul 2018 11:40:38 +0800 Subject: [PATCH 24/38] =?UTF-8?q?REPORT-9511=E3=80=90=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E5=99=A8=E3=80=91=E8=A1=A8=E5=8D=95=E4=BB=8E=E8=87=AA=E9=80=82?= =?UTF-8?q?=E5=BA=94=E5=B8=83=E5=B1=80=E5=88=87=E6=8D=A2=E5=88=B0=E7=BB=9D?= =?UTF-8?q?=E5=AF=B9=E5=B8=83=E5=B1=80=EF=BC=8C=E7=BB=9D=E5=AF=B9=E7=94=BB?= =?UTF-8?q?=E5=B8=83=E5=9D=97=E7=9A=84=E5=AE=BD=E5=BA=A6=E4=B8=8D=E8=83=BD?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widget/ui/FormWidgetCardPane.java | 3 ++- .../layout/FRAbsoluteBodyLayoutDefinePane.java | 11 +++++++++-- .../layout/FRAbsoluteLayoutDefinePane.java | 18 ++++++------------ 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java index b55f6a3e5..b1b149c2f 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/widget/ui/FormWidgetCardPane.java @@ -6,6 +6,7 @@ import com.fr.design.designer.beans.events.DesignerEvent; import com.fr.design.designer.creator.XCreator; import com.fr.design.designer.creator.XCreatorUtils; import com.fr.design.designer.creator.XLayoutContainer; +import com.fr.design.designer.creator.XWAbsoluteBodyLayout; import com.fr.design.designer.creator.XWAbsoluteLayout; import com.fr.design.designer.creator.XWFitLayout; import com.fr.design.designer.creator.XWParameterLayout; @@ -79,7 +80,7 @@ public class FormWidgetCardPane extends AbstractAttrNoScrollPane { public WidgetBoundPane createWidgetBoundPane(XCreator xCreator) { XLayoutContainer xLayoutContainer = getParent(xCreator); - if (xLayoutContainer == null || xCreator.acceptType(XWParameterLayout.class) || xCreator.acceptType(XWAbsoluteLayout.class)) { + if (xLayoutContainer == null || xCreator.acceptType(XWParameterLayout.class) || xCreator.acceptType(XWAbsoluteBodyLayout.class)) { return null; } else if (xLayoutContainer.acceptType(XWAbsoluteLayout.class)) { return new WidgetAbsoluteBoundPane(xCreator); diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java index 5a3ecbfd7..9726db040 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/FRAbsoluteBodyLayoutDefinePane.java @@ -19,6 +19,7 @@ import com.fr.design.mainframe.FormDesigner; import com.fr.design.mainframe.WidgetPropertyPane; import com.fr.design.mainframe.widget.accessibles.AccessibleBodyWatermarkEditor; import com.fr.design.mainframe.widget.accessibles.AccessibleWLayoutBorderStyleEditor; +import com.fr.design.widget.ui.designer.component.WidgetBoundPane; import com.fr.form.ui.LayoutBorderStyle; import com.fr.form.ui.container.WAbsoluteBodyLayout; import com.fr.form.ui.container.WAbsoluteLayout; @@ -43,6 +44,7 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { private AccessibleWLayoutBorderStyleEditor borderStyleEditor; private AccessibleBodyWatermarkEditor watermarkEditor; + private WidgetBoundPane boundPane; private UIComboBox layoutCombox; private WBodyLayoutType layoutType = WBodyLayoutType.ABSOLUTE; @@ -54,6 +56,9 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { public void initComponent() { super.initComponent(); + JPanel centerPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); + boundPane = new WidgetBoundPane(creator); + centerPane.add(boundPane, BorderLayout.CENTER); borderStyleEditor = new AccessibleWLayoutBorderStyleEditor(); watermarkEditor = new AccessibleBodyWatermarkEditor(); JPanel jPanel = TableLayoutHelper.createGapTableLayoutPane( @@ -65,7 +70,8 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { jPanel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); borderPane.add(jPanel, BorderLayout.CENTER); UIExpandablePane advancedPane = new UIExpandablePane(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Advanced"), 280, 20, borderPane ); - this.add(advancedPane, BorderLayout.NORTH); + centerPane.add(advancedPane, BorderLayout.NORTH); + this.add(centerPane, BorderLayout.NORTH); } public JPanel createThirdPane() { @@ -77,7 +83,6 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { new Component[]{new UILabel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer-Widget_Scaling_Mode")), comboBox}}, TableLayoutHelper.FILL_LASTCOLUMN, IntervalConstants.INTERVAL_W1, IntervalConstants.INTERVAL_L1); jPanel.add(northPane, BorderLayout.NORTH); jPanel.add(centerPane, BorderLayout.CENTER); -// northPane.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L1, 0, 0, 0)); centerPane.setBorder(BorderFactory.createEmptyBorder(IntervalConstants.INTERVAL_L1, IntervalConstants.INTERVAL_L5, 0, 0)); return jPanel; @@ -101,12 +106,14 @@ public class FRAbsoluteBodyLayoutDefinePane extends FRAbsoluteLayoutDefinePane { public void populateSubPane(WAbsoluteLayout ob) { layoutCombox.setSelectedIndex(1); borderStyleEditor.setValue(ob.getBorderStyle()); + boundPane.populate(); watermarkEditor.setValue(ReportUtils.getWatermarkFromAttrMarkFile(getCurrentIOFile())); } public WAbsoluteBodyLayout updateSubPane() { WAbsoluteBodyLayout layout = (WAbsoluteBodyLayout) creator.toData(); + boundPane.update(); Item item = (Item) layoutCombox.getSelectedItem(); Object value = item.getValue(); int state = 0; diff --git a/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/FRAbsoluteLayoutDefinePane.java b/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/FRAbsoluteLayoutDefinePane.java index 11c4ee3e2..43ab7a088 100644 --- a/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/FRAbsoluteLayoutDefinePane.java +++ b/designer-form/src/main/java/com/fr/design/widget/ui/designer/layout/FRAbsoluteLayoutDefinePane.java @@ -12,19 +12,19 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.TableLayout; import com.fr.design.layout.TableLayoutHelper; import com.fr.design.widget.ui.designer.AbstractDataModify; -import com.fr.design.widget.ui.designer.component.WidgetBoundPane; import com.fr.form.ui.container.WAbsoluteLayout; - -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JPanel; +import java.awt.BorderLayout; +import java.awt.Component; /** * Created by ibm on 2017/8/2. */ public class FRAbsoluteLayoutDefinePane extends AbstractDataModify { protected UIComboBox comboBox; - private WidgetBoundPane boundPane; public FRAbsoluteLayoutDefinePane(XCreator xCreator) { super(xCreator); @@ -34,17 +34,13 @@ public class FRAbsoluteLayoutDefinePane extends AbstractDataModify Date: Mon, 30 Jul 2018 11:52:16 +0800 Subject: [PATCH 25/38] =?UTF-8?q?REPORT-9819=20=E3=80=9010.0=E4=BA=8C?= =?UTF-8?q?=E8=BD=AE=E5=9B=9E=E5=BD=92=E3=80=91alphafine=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E6=89=93=E5=BC=80=E5=90=8E=EF=BC=8C=E5=86=8D?= =?UTF-8?q?=E6=AC=A1=E6=90=9C=E7=B4=A2=E4=BC=9A=E5=A2=9E=E5=8A=A0=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E9=87=8D=E5=A4=8D=E6=A8=A1=E6=9D=BF=E7=9A=84=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../alphafine/search/manager/impl/RecentSearchManager.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java index bb1d21ec8..3272e4326 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java @@ -77,8 +77,12 @@ public class RecentSearchManager implements AlphaFineSearchProvider { recentModelList = getRecentModelList(searchText); if (recentModelList != null && recentModelList.size() > 0) { modelList.add(new MoreModel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_AlphaFine_Latest"))); + if (recentModelList.size() > AlphaFineConstants.LATEST_SHOW_SIZE + 1) { + modelList.addAll(recentModelList.subList(0, AlphaFineConstants.LATEST_SHOW_SIZE)); + } else { + modelList.addAll(recentModelList); + } } - modelList.addAll(recentModelList.subList(0, AlphaFineConstants.LATEST_SHOW_SIZE)); return modelList; } From 15dc4d444f44a414a04586babca3ceb7fd3f3107 Mon Sep 17 00:00:00 2001 From: XiaXiang Date: Mon, 30 Jul 2018 12:02:47 +0800 Subject: [PATCH 26/38] rt --- .../alphafine/search/manager/impl/RecentSearchManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java index 3272e4326..5f0ad4da4 100644 --- a/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java +++ b/designer-realize/src/main/java/com/fr/design/mainframe/alphafine/search/manager/impl/RecentSearchManager.java @@ -77,7 +77,7 @@ public class RecentSearchManager implements AlphaFineSearchProvider { recentModelList = getRecentModelList(searchText); if (recentModelList != null && recentModelList.size() > 0) { modelList.add(new MoreModel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_AlphaFine_Latest"))); - if (recentModelList.size() > AlphaFineConstants.LATEST_SHOW_SIZE + 1) { + if (recentModelList.size() > AlphaFineConstants.LATEST_SHOW_SIZE) { modelList.addAll(recentModelList.subList(0, AlphaFineConstants.LATEST_SHOW_SIZE)); } else { modelList.addAll(recentModelList); From bfa2fd0ed7de13466a477c2a862c6229827a8a4f Mon Sep 17 00:00:00 2001 From: hzzz Date: Mon, 30 Jul 2018 19:24:24 +0800 Subject: [PATCH 27/38] =?UTF-8?q?REPORT-10185=E3=80=9010.0=E4=BA=8C?= =?UTF-8?q?=E8=BD=AE=E5=9B=9E=E5=BD=92=E3=80=91=20=E8=BF=9C=E7=A8=8B?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=E7=89=B9=E5=8D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/ChartTypeInterfaceManager.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java b/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java index e3fa679d6..ff3056df2 100644 --- a/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java @@ -137,13 +137,13 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr } //异步加载图片 - new Thread(new Runnable() { - - @Override - public void run() { - initAllChartsDemoImage(allCharts); - } - }).start(); +// new Thread(new Runnable() { +// +// @Override +// public void run() { +// initAllChartsDemoImage(allCharts); +// } +// }).start(); return child; } From deef9be217e5bc93366e4173ce978a4873ac93bc Mon Sep 17 00:00:00 2001 From: "Mata.Li" Date: Mon, 30 Jul 2018 19:51:27 +0800 Subject: [PATCH 28/38] REPORT-10159 --- .../com/fr/design/DesignerEnvManager.java | 19 +++++++++++++++++-- .../fr/design/actions/help/WebDemoAction.java | 2 ++ .../java/com/fr/design/utils/DesignUtils.java | 1 + 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 40c3a12eb..62a0d53cf 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -8,12 +8,15 @@ import com.fr.base.FRContext; import com.fr.base.Utils; import com.fr.design.actions.help.alphafine.AlphaFineConfigManager; import com.fr.design.constants.UIConstants; +import com.fr.design.data.DesignTableDataManager; import com.fr.design.env.DesignerWorkspaceGenerator; import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.env.DesignerWorkspaceType; import com.fr.design.env.LocalDesignerWorkspaceInfo; import com.fr.design.env.RemoteDesignerWorkspaceInfo; +import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.style.color.ColorSelectConfigManager; +import com.fr.design.utils.DesignUtils; import com.fr.file.FILEFactory; import com.fr.general.ComparatorUtils; import com.fr.general.FRLogFormatter; @@ -37,6 +40,7 @@ import com.fr.stable.xml.XMLTools; import com.fr.stable.xml.XMLWriter; import com.fr.stable.xml.XMLableReader; import com.fr.workspace.WorkContext; +import com.fr.workspace.WorkContextCallback; import com.fr.workspace.connect.AuthException; import javax.swing.SwingWorker; @@ -498,7 +502,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * 返回默认环境 */ public DesignerWorkspaceInfo getDefaultConfig() { - String installHome = StableUtils.getInstallHome(); + String installHome = "D:\\应用\\FineReport_10.0";// StableUtils.getInstallHome(); String defaultenvPath = getDefaultenvPath(installHome); defaultenvPath = new File(defaultenvPath).getPath(); Iterator> entryIt = nameEnvMap.entrySet().iterator(); @@ -549,7 +553,18 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { return; } try { - WorkContext.switchTo(DesignerWorkspaceGenerator.generate(getDefaultConfig())); + String envName = getDefaultEnvName(); + WorkContext.switchTo(DesignerWorkspaceGenerator.generate(getDefaultConfig()),new WorkContextCallback() { + + @Override + public void done() { + + DesignerEnvManager.getEnvManager().setCurEnvName(envName); + DesignUtils.refreshDesignerFrame(); + HistoryTemplateListPane.getInstance().getCurrentEditingTemplate().refreshToolArea(); + DesignTableDataManager.fireDSChanged(new HashMap()); + } + }); } catch (AuthException e) { FineLoggerFactory.getLogger().error(e.getMessage(), e); } diff --git a/designer-base/src/main/java/com/fr/design/actions/help/WebDemoAction.java b/designer-base/src/main/java/com/fr/design/actions/help/WebDemoAction.java index 15473d9d6..8596d5e44 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/WebDemoAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/WebDemoAction.java @@ -1,6 +1,7 @@ package com.fr.design.actions.help; import com.fr.base.BaseUtils; +import com.fr.design.DesignerEnvManager; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; @@ -23,6 +24,7 @@ public class WebDemoAction extends UpdateAction { * @param evt 事件 */ public void actionPerformed(ActionEvent evt) { + DesignerEnvManager.getEnvManager().setCurrentEnv2Default(); ServerStarter.browserDemoURL(); } diff --git a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java index 7082268d2..b9f720e26 100644 --- a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java @@ -128,6 +128,7 @@ public class DesignUtils { String line = null; while ((line = reader.readLine()) != null) { if (line.startsWith("demo")) { + DesignerEnvManager.getEnvManager().setCurrentEnv2Default(); ServerStarter.browserDemoURL(); } else if (StringUtils.isNotEmpty(line)) { File f = new File(line); From 432e3aaff995de34e0e62f660c88ada0aa23fb4b Mon Sep 17 00:00:00 2001 From: "Mata.Li" Date: Mon, 30 Jul 2018 19:53:21 +0800 Subject: [PATCH 29/38] REPORT-10159 --- .../src/main/java/com/fr/design/DesignerEnvManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 62a0d53cf..4e45f0e0c 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -502,7 +502,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * 返回默认环境 */ public DesignerWorkspaceInfo getDefaultConfig() { - String installHome = "D:\\应用\\FineReport_10.0";// StableUtils.getInstallHome(); + String installHome = StableUtils.getInstallHome(); String defaultenvPath = getDefaultenvPath(installHome); defaultenvPath = new File(defaultenvPath).getPath(); Iterator> entryIt = nameEnvMap.entrySet().iterator(); From 03b5f203a83741f65ea08587efdb61ddbc9d7c3d Mon Sep 17 00:00:00 2001 From: zheng Date: Mon, 30 Jul 2018 21:48:48 +0800 Subject: [PATCH 30/38] =?UTF-8?q?CHART-2699=20=E7=B1=BB=E5=9E=8B=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=BC=B9=E5=87=BA=E6=A1=86=E7=9A=84=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=20=E7=94=A8=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/ChartTypeInterfaceManager.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java b/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java index e3fa679d6..06e74b39c 100644 --- a/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java @@ -136,15 +136,6 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr allCharts[i] = rowChart; } - //异步加载图片 - new Thread(new Runnable() { - - @Override - public void run() { - initAllChartsDemoImage(allCharts); - } - }).start(); - return child; } From 39c06853dd8adc0ea4f14c2d893dde7bc4f103b4 Mon Sep 17 00:00:00 2001 From: zheng Date: Mon, 30 Jul 2018 21:51:00 +0800 Subject: [PATCH 31/38] =?UTF-8?q?CHART-2699=20=E7=B1=BB=E5=9E=8B=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=BC=B9=E5=87=BA=E6=A1=86=E7=9A=84=E5=9B=BE=E8=A1=A8?= =?UTF-8?q?=20=E7=94=A8=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/fr/design/ChartTypeInterfaceManager.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java b/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java index ff3056df2..06e74b39c 100644 --- a/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java +++ b/designer-chart/src/main/java/com/fr/design/ChartTypeInterfaceManager.java @@ -136,15 +136,6 @@ public class ChartTypeInterfaceManager implements ExtraChartDesignClassManagerPr allCharts[i] = rowChart; } - //异步加载图片 -// new Thread(new Runnable() { -// -// @Override -// public void run() { -// initAllChartsDemoImage(allCharts); -// } -// }).start(); - return child; } From 8166d5dd409c18c4fe90bc609744cff1801fc161 Mon Sep 17 00:00:00 2001 From: juhaoyu <2335173323@qq.com> Date: Mon, 30 Jul 2018 22:20:16 +0800 Subject: [PATCH 32/38] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E6=89=93=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/DesignerEnvManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 4e45f0e0c..60ce96504 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -553,7 +553,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { return; } try { - String envName = getDefaultEnvName(); + final String envName = getDefaultEnvName(); WorkContext.switchTo(DesignerWorkspaceGenerator.generate(getDefaultConfig()),new WorkContextCallback() { @Override From 9e926b954e491f460d56efd6361c8f277a36cb5a Mon Sep 17 00:00:00 2001 From: kerry Date: Tue, 31 Jul 2018 10:22:49 +0800 Subject: [PATCH 33/38] =?UTF-8?q?REPORT-10181=E3=80=9010.0=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E3=80=91=E8=AE=BE=E8=AE=A1=E5=99=A8=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E8=BF=99=E9=87=8C=E6=8F=92=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E4=BF=A1=E6=81=AFjar=E5=8C=85=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E4=B8=8D=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/extra/PluginUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-base/src/main/java/com/fr/design/extra/PluginUtils.java b/designer-base/src/main/java/com/fr/design/extra/PluginUtils.java index a5673b7fa..43fb9b2c3 100644 --- a/designer-base/src/main/java/com/fr/design/extra/PluginUtils.java +++ b/designer-base/src/main/java/com/fr/design/extra/PluginUtils.java @@ -229,7 +229,7 @@ public class PluginUtils { jo.put("free", pluginContext.isFree()); jo.put("licDamaged", pluginContext.isLicDamaged()); jo.put("available", pluginContext.isAvailable()); - jo.put("leftDays", String.valueOf(pluginContext.getLeftDays())); + jo.put("leftDays", pluginContext.getLeftDays()); jo.put("trial", pluginContext.isOnTrial()); jo.put("deadline", getDeadline(pluginContext)); jo.put("registerFailed", pluginContext.isRegisterFailed()); From fc78087cc544a2f55c4661cbdf64a5cff3e7028a Mon Sep 17 00:00:00 2001 From: vito Date: Tue, 31 Jul 2018 11:21:34 +0800 Subject: [PATCH 34/38] =?UTF-8?q?REPORT-10160=2010.0=E5=86=92=E7=83=9F=20M?= =?UTF-8?q?ac=E8=AE=BE=E8=AE=A1=E5=99=A8=E5=90=AF=E5=8A=A8,=20=E5=AD=97?= =?UTF-8?q?=E4=BD=93=E7=B3=8A=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- designer-realize/src/main/java/com/fr/start/Designer.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/designer-realize/src/main/java/com/fr/start/Designer.java b/designer-realize/src/main/java/com/fr/start/Designer.java index 29e84d031..e4c119f7d 100644 --- a/designer-realize/src/main/java/com/fr/start/Designer.java +++ b/designer-realize/src/main/java/com/fr/start/Designer.java @@ -150,11 +150,6 @@ public class Designer extends BaseDesigner { private static SplashStrategy createSplash() { // 这里可以开接口加载自定义启动画面 - if (OperatingSystem.isWindows()) { - return new SplashFx(); - } else if (OperatingSystem.isMacOS()) { - return new SplashMac(); - } return new SplashFx(); } From 2ae7e2a073619cca9fce3df9eea8eed5c85bd408 Mon Sep 17 00:00:00 2001 From: ju Date: Tue, 31 Jul 2018 14:17:04 +0800 Subject: [PATCH 35/38] =?UTF-8?q?REPORT-9652=20=E4=BC=98=E5=8C=96=E4=B8=80?= =?UTF-8?q?=E4=B8=8B=EF=BC=8C=E5=87=8F=E5=B0=91RPC=E5=92=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E8=AE=BF=E9=97=AE=E6=AC=A1=E6=95=B0=20?= =?UTF-8?q?=E3=80=9010.0=E4=BA=8C=E8=BD=AE=E5=9B=9E=E5=BD=92=E3=80=91?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E9=9B=86=E6=88=90-=E9=9B=86=E7=BE=A4-?= =?UTF-8?q?=E5=A4=A7=E6=95=B0=E6=8D=AE=E9=87=8F=E6=A8=A1=E6=9D=BF=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E6=97=B6=E6=96=87=E4=BB=B6=E5=A4=B9=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/gui/itree/filetree/TemplateFileTree.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java index 4ac6141c7..862aff379 100644 --- a/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java +++ b/designer-base/src/main/java/com/fr/design/gui/itree/filetree/TemplateFileTree.java @@ -179,8 +179,9 @@ public class TemplateFileTree extends EnvFileTree { @Override protected ExpandMutableTreeNode[] loadChildTreeNodes(ExpandMutableTreeNode treeNode) { + FileNode[] fnArray = listFileNodes(treeNode); - + return fileNodeArray2TreeNodeArray(fnArray); } @@ -189,13 +190,14 @@ public class TemplateFileTree extends EnvFileTree { */ private ExpandMutableTreeNode[] fileNodeArray2TreeNodeArray(FileNode[] fileNodes) { boolean isLocal = WorkContext.getCurrent().isLocal(); + boolean isRoot = WorkContext.getCurrent().isRoot(); ExpandMutableTreeNode[] res = new ExpandMutableTreeNode[fileNodes.length]; for (int i = 0; i < res.length; i++) { FileNode fn = fileNodes[i]; res[i] = new ExpandMutableTreeNode(fn); if (fn.isDirectory()) { res[i].add(new ExpandMutableTreeNode()); - if (isLocal || WorkContext.getCurrent().isRoot()) { + if (isLocal || isRoot) { res[i].setFullAuthority(true); } else { boolean hasFullAuthority = isContained(fn); @@ -203,7 +205,6 @@ public class TemplateFileTree extends EnvFileTree { } } } - return res; } @@ -269,6 +270,7 @@ public class TemplateFileTree extends EnvFileTree { * 求当前TreeNode下所有的FileNode. */ private FileNode[] listFileNodes(ExpandMutableTreeNode currentTreeNode) { + if (currentTreeNode == null) { return new FileNode[0]; } @@ -276,6 +278,7 @@ public class TemplateFileTree extends EnvFileTree { Object object = currentTreeNode.getUserObject(); if (object instanceof FileNode) { + return this.listFileNodes(((FileNode) object).getEnvPath()); } From 3f1cec83e442ad5eae2da31de240199cc2309e51 Mon Sep 17 00:00:00 2001 From: plough Date: Tue, 31 Jul 2018 14:32:21 +0800 Subject: [PATCH 36/38] =?UTF-8?q?=E6=97=A0JIRA=E4=BB=BB=E5=8A=A1=EF=BC=8C?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E6=B7=BB=E5=8A=A0=E5=8F=82=E6=95=B0=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E5=90=8E=EF=BC=8C=E6=B0=B4=E5=8D=B0=E9=94=99=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/fr/design/mainframe/FormDesignerUI.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java index 0f1ccf33c..6e075f733 100644 --- a/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java +++ b/designer-form/src/main/java/com/fr/design/mainframe/FormDesignerUI.java @@ -115,7 +115,7 @@ public class FormDesignerUI extends ComponentUI { private void paintWatermark(Graphics2D g) { WatermarkAttr watermark = ReportUtils.getWatermarkFromAttrMarkFile(designer.getTarget()); WatermarkPainter painter = WatermarkPainter.createPainter(watermark, designer.getResolution()); - painter.paint(g, 0, designer.getParaHeight(), designer.getArea().getBounds()); + painter.paint(g, 0, 0, designer.getArea().getBounds()); } private int[] getActualLine(int i) { From 9ab8e82ada52be5efd7c8201399fbdd362e733a9 Mon Sep 17 00:00:00 2001 From: richie Date: Tue, 31 Jul 2018 14:36:09 +0800 Subject: [PATCH 37/38] =?UTF-8?q?CORE-116=20=E7=BB=A7=E7=BB=AD=E6=94=B9?= =?UTF-8?q?=E5=9B=BD=E9=99=85=E5=8C=96=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/fr/design/DesignerEnvManager.java | 130 +++++++++--------- .../design/actions/community/VideoAction.java | 4 +- .../design/actions/file/PreferencePane.java | 84 ++++------- .../design/actions/file/SwitchExistEnv.java | 5 +- .../com/fr/design/actions/help/AboutPane.java | 30 ++-- .../design/actions/help/TutorialAction.java | 3 +- .../fr/design/editor/editor/DateEditor.java | 8 +- .../com/fr/design/formula/FormulaPane.java | 3 +- .../com/fr/design/formula/FunctionNAD.java | 48 +++---- .../com/fr/design/mainframe/TemplatePane.java | 2 + .../mainframe/toolbar/ToolBarMenuDock.java | 7 +- .../java/com/fr/design/utils/DesignUtils.java | 2 +- .../com/fr/design/DesignerEnvManagerTest.java | 23 +--- .../actions/help/TutorialActionTest.java | 11 +- .../start/CollectUserInformationDialog.java | 15 +- .../main/java/com/fr/start/SplashContext.java | 5 +- .../fr/start/module/PreStartActivator.java | 2 +- 17 files changed, 167 insertions(+), 215 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java index 60ce96504..13b95f8f4 100644 --- a/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java +++ b/designer-base/src/main/java/com/fr/design/DesignerEnvManager.java @@ -22,10 +22,9 @@ import com.fr.general.ComparatorUtils; import com.fr.general.FRLogFormatter; import com.fr.general.GeneralContext; import com.fr.general.IOUtils; -import com.fr.general.Inter; import com.fr.general.xml.GeneralXMLTools; -import com.fr.locale.InterProviderFactory; import com.fr.log.FineLoggerFactory; +import com.fr.stable.CommonUtils; import com.fr.stable.Constants; import com.fr.stable.EnvChangedListener; import com.fr.stable.ListMap; @@ -43,10 +42,9 @@ import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContextCallback; import com.fr.workspace.connect.AuthException; -import javax.swing.SwingWorker; +import javax.swing.*; import javax.swing.SwingWorker.StateValue; -import java.awt.Color; -import java.awt.Rectangle; +import java.awt.*; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; @@ -111,7 +109,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { private Color paginationLineColor = Color.black; // line color of paper private boolean supportCellEditorDef = false; private boolean isDragPermited = false; - private int language; + private Locale language = Locale.SIMPLIFIED_CHINESE; //2014-8-26默认显示全部, 因为以前的版本, 虽然是false, 实际上是显示所有表, 因此这边要兼容 private boolean useOracleSystemSpace = true; private int cachingTemplateLimit = CACHINGTEMPLATE_LIMIT; @@ -502,7 +500,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { * 返回默认环境 */ public DesignerWorkspaceInfo getDefaultConfig() { - String installHome = StableUtils.getInstallHome(); + String installHome = StableUtils.getInstallHome(); String defaultenvPath = getDefaultenvPath(installHome); defaultenvPath = new File(defaultenvPath).getPath(); Iterator> entryIt = nameEnvMap.entrySet().iterator(); @@ -554,7 +552,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } try { final String envName = getDefaultEnvName(); - WorkContext.switchTo(DesignerWorkspaceGenerator.generate(getDefaultConfig()),new WorkContextCallback() { + WorkContext.switchTo(DesignerWorkspaceGenerator.generate(getDefaultConfig()), new WorkContextCallback() { @Override public void done() { @@ -713,37 +711,15 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { /** * 返回语言类型 */ - public int getLanguage() { - return this.language; - } - - /** - * 返回语言类型 - */ - public Locale getLocale() { - // 性能 - if (language <= 1) { - return Locale.CHINA; - } - Locale[] locales = supportLocale(); - if (language <= locales.length) { - return locales[language - 1]; - } - return Locale.CHINA; - } - - // 当前系统支持的语言 - protected Locale[] supportLocale() { - Inter.getInstance(); - Map languageMap = InterProviderFactory.getProvider().getSupportLocaleMap(); - return languageMap.keySet().toArray(new Locale[languageMap.size()]); + public Locale getLanguage() { + return language; } /** * 设置语言参数 */ - public void setLanguage(int i) { - this.language = i; + public void setLanguage(Locale locale) { + this.language = locale; } /** @@ -1310,7 +1286,34 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { private void readLanguage(XMLableReader reader) { String tmpVal; if ((tmpVal = reader.getElementValue()) != null) { - this.setLanguage(Integer.parseInt(tmpVal)); + if (!CommonUtils.isNumber(tmpVal)) { + setLanguage(CommonUtils.stringToLocale(tmpVal)); + } else { + // 用于兼容10.0之前的版本 + int value = Integer.parseInt(tmpVal); + switch (value) { + case 0: + setLanguage(Locale.SIMPLIFIED_CHINESE); + break; + case 1: + setLanguage(Locale.US); + break; + case 2: + setLanguage(Locale.JAPAN); + break; + case 3: + setLanguage(Locale.TRADITIONAL_CHINESE); + break; + case 4: + setLanguage(Locale.KOREA); + break; + case 5: + setLanguage(new Locale("pt", "PT")); + break; + default: + setLanguage(Locale.SIMPLIFIED_CHINESE); + } + } } } @@ -1368,6 +1371,34 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { reader.readXMLObject(this.configManager); } + public String getUUID() { + return StringUtils.isEmpty(uuid) ? UUID.randomUUID().toString() : uuid; + } + + public int getActiveKeyStatus() { + return activeKeyStatus; + } + + public void setActiveKeyStatus(int activeKeyStatus) { + this.activeKeyStatus = activeKeyStatus; + } + + public AlphaFineConfigManager getAlphaFineConfigManager() { + return alphaFineConfigManager; + } + + public void setAlphaFineConfigManager(AlphaFineConfigManager alphaFineConfigManager) { + this.alphaFineConfigManager = alphaFineConfigManager; + } + + public boolean isImageCompress() { + return imageCompress; + } + + public void setImageCompress(boolean imageCompress) { + this.imageCompress = imageCompress; + } + /** * Read XML.
* The method will be invoked when read data from XML file.
@@ -1640,17 +1671,6 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { } } - public String getUUID() { - return StringUtils.isEmpty(uuid) ? UUID.randomUUID().toString() : uuid; - } - - public int getActiveKeyStatus() { - return activeKeyStatus; - } - - public void setActiveKeyStatus(int activeKeyStatus) { - this.activeKeyStatus = activeKeyStatus; - } //写入uuid private void writeUUID(XMLPrintWriter writer) { @@ -1814,7 +1834,7 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { writer.textNode("" + this.lastOpenFilePath); writer.end(); - writer.startTAG("Language").textNode(String.valueOf(this.language)).end() + writer.startTAG("Language").textNode(CommonUtils.localeToString(language)).end() .startTAG("JettyServerPort").textNode(String.valueOf(this.jettyServerPort)).end(); } @@ -1867,20 +1887,4 @@ public class DesignerEnvManager implements XMLReadable, XMLWriter { .end(); } - - public AlphaFineConfigManager getAlphaFineConfigManager() { - return alphaFineConfigManager; - } - - public void setAlphaFineConfigManager(AlphaFineConfigManager alphaFineConfigManager) { - this.alphaFineConfigManager = alphaFineConfigManager; - } - - public boolean isImageCompress() { - return imageCompress; - } - - public void setImageCompress(boolean imageCompress) { - this.imageCompress = imageCompress; - } } \ No newline at end of file diff --git a/designer-base/src/main/java/com/fr/design/actions/community/VideoAction.java b/designer-base/src/main/java/com/fr/design/actions/community/VideoAction.java index 17d45f029..f28ee3b72 100644 --- a/designer-base/src/main/java/com/fr/design/actions/community/VideoAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/community/VideoAction.java @@ -4,8 +4,8 @@ import com.fr.base.BaseUtils; import com.fr.base.FRContext; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; - import com.fr.general.CloudCenter; +import com.fr.general.GeneralContext; import com.fr.log.FineLoggerFactory; import com.fr.stable.StringUtils; @@ -33,7 +33,7 @@ public class VideoAction extends UpdateAction public void actionPerformed(ActionEvent arg0) { String url; - if (FRContext.getLocale().equals(Locale.US)) { + if (GeneralContext.getLocale().equals(Locale.US)) { url = CloudCenter.getInstance().acquireUrlByKind("bbs.video.en"); } else { url = CloudCenter.getInstance().acquireUrlByKind("bbs.video"); diff --git a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java index de57a4018..37405bb55 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/PreferencePane.java @@ -12,6 +12,7 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIColorButton; import com.fr.design.gui.icheckbox.UICheckBox; import com.fr.design.gui.icombobox.UIComboBox; +import com.fr.design.gui.icombobox.UIDictionaryComboBox; import com.fr.design.gui.ilable.ActionLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ispinner.UISpinner; @@ -23,7 +24,6 @@ import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.ComparatorUtils; import com.fr.general.FRFont; - import com.fr.general.log.Log4jConfig; import com.fr.locale.InterProviderFactory; import com.fr.third.apache.log4j.Level; @@ -32,14 +32,11 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; -import java.util.ArrayList; import java.util.Locale; import java.util.Map; @@ -87,9 +84,7 @@ public class PreferencePane extends BasicPane { private static final String DISPLAY_MINUS = "-"; private static final Level[] LOG = {Level.FATAL, Level.ERROR, Level.WARN, Level.INFO, Level.DEBUG}; - private static java.util.List LANGUAGE = new ArrayList<>(); - private static int designerEnvLanguageIndex; // 打开设置对话框时,设计器使用的语言 private boolean languageChanged; // 是否修改了设计器语言设置 //设置是否支持undo private UICheckBox supportUndoCheckBox; @@ -114,7 +109,8 @@ public class PreferencePane extends BasicPane { private UITextField logExportDirectoryField; - private UIComboBox logLevelComboBox, languageComboBox, pageLengthComboBox, reportLengthComboBox; + private UIComboBox logLevelComboBox, pageLengthComboBox, reportLengthComboBox; + private UIDictionaryComboBox languageComboBox; private IntegerEditor portEditor; private UITextField jdkHomeTextField; private UICheckBox oracleSpace; @@ -123,18 +119,8 @@ public class PreferencePane extends BasicPane { public PreferencePane() { this.initComponents(); - this.initLanguageItems(); } - // 语言选项 - private void initLanguageItems() { - LANGUAGE.clear(); - Map map = InterProviderFactory.getProvider().getSupportLocaleMap(); - LANGUAGE.add(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Language_Default")); - for (Locale locale : map.keySet()) { - LANGUAGE.add(getLocaledLanguage(map.get(locale), locale)); - } - } protected void initComponents() { JPanel contentPane = this; @@ -182,13 +168,6 @@ public class PreferencePane extends BasicPane { advancePane.add(spaceUpPane); } - private static String getLocaledLanguage(String key, Locale locale) { - StringBuilder sb = new StringBuilder(); - sb.append(com.fr.design.i18n.Toolkit.i18nText(key)).append("("); - sb.append(com.fr.design.i18n.Toolkit.i18nText(key)).append(")"); - return sb.toString(); - } - private void createFunctionPane(JPanel generalPane) { JPanel functionPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Preference-Function")); generalPane.add(functionPane); @@ -379,8 +358,9 @@ public class PreferencePane extends BasicPane { JPanel LanguagePane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Choose_Language")); generalPane.add(languageAndDashBoard_pane); languageAndDashBoard_pane.add(LanguagePane); - languageComboBox = new UIComboBox(LANGUAGE.toArray()); - languageComboBox.setFont(FRFont.getInstance("Dialog", Font.PLAIN, 12));//为了在中文系统中显示韩文 + + languageComboBox = createLanguageComboBox(); + ActionLabel languageLabel = new ActionLabel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Designer_Language")); languageLabel.addActionListener(new ActionListener() { @Override @@ -402,16 +382,26 @@ public class PreferencePane extends BasicPane { Component[][] components = { {languageLabel, languageComboBox, noticeLabel}, }; - languageComboBox.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - //Inter.fr = ResourceBundle.getBundle("com/fr/general/locale/fr", Locale.US); - } - }); JPanel choosePane = TableLayoutHelper.createTableLayoutPane(components, rowSize, columnSize); LanguagePane.add(choosePane); } + private UIDictionaryComboBox createLanguageComboBox() { + Map map = InterProviderFactory.getProvider().getSupportLocaleMap(); + int size = map.size(); + Locale[] keys = new Locale[size]; + String[] values = new String[size]; + int i = 0; + for (Map.Entry entry : map.entrySet()) { + keys[i] = entry.getKey(); + values[i] = com.fr.design.i18n.Toolkit.i18nText(entry.getValue()); + i++; + } + UIDictionaryComboBox languageComboBox = new UIDictionaryComboBox<>(keys, values); + languageComboBox.setFont(FRFont.getInstance("Dialog", Font.PLAIN, 12));//为了在中文系统中显示韩文 + return languageComboBox; + } + private String getDisplayShortCut(String shotrCut) { return shotrCut.replace(TYPE, DISPLAY_TYPE).replace(BACK_SLASH, DISPLAY_BACK_SLASH).replace(SLASH, DISPLAY_SLASH) .replace(CONTROL, DISPLAY_CONTROL).replace(OPEN_BRACKET, DISPLAY_OPEN_BRACKET).replace(CLOSE_BRACKET, DISPLAY_CLOSE_BRACKET) @@ -506,7 +496,7 @@ public class PreferencePane extends BasicPane { JPanel memoryPane = FRGUIPaneFactory.createTitledBorderPane(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Preference_CachingTemplate")); UILabel memoryLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Preference_MaxCachingTemplate")); UILabel memoryTipLabel = new UILabel(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Preference_CachingTemplateTip")); - memoryTipLabel.setBorder(BorderFactory.createEmptyBorder( 0, CACHING_GAP, 0, 0)); + memoryTipLabel.setBorder(BorderFactory.createEmptyBorder(0, CACHING_GAP, 0, 0)); cachingTemplateSpinner = new UISpinner(0, CACHING_MAX, 1, CACHING_DEFAULT); JPanel memorySpace = new JPanel(FRGUIPaneFactory.createLeftZeroLayout()); memorySpace.add(memoryLabel); @@ -564,8 +554,8 @@ public class PreferencePane extends BasicPane { this.logLevelComboBox.setSelectedItem(Log4jConfig.getInstance().getRootLevel()); - this.languageComboBox.setSelectedItem(LANGUAGE.get(designerEnvManager.getLanguage())); - designerEnvLanguageIndex = designerEnvManager.getLanguage(); + this.languageComboBox.setSelectedItem(designerEnvManager.getLanguage()); + this.pageLengthComboBox.setSelectedIndex(designerEnvManager.getPageLengthUnit()); this.reportLengthComboBox.setSelectedIndex(designerEnvManager.getReportLengthUnit()); @@ -625,7 +615,7 @@ public class PreferencePane extends BasicPane { designerEnvManager.setPaginationLineColor(paginationLineColorTBButton.getColor()); - designerEnvManager.setLanguage(getLanguageInt()); + designerEnvManager.setLanguage(languageComboBox.getSelectedItem()); designerEnvManager.setPageLengthUnit((short) pageLengthComboBox.getSelectedIndex()); designerEnvManager.setReportLengthUnit((short) reportLengthComboBox.getSelectedIndex()); @@ -637,7 +627,6 @@ public class PreferencePane extends BasicPane { designerEnvManager.setOracleSystemSpace(this.oracleSpace.isSelected()); designerEnvManager.setCachingTemplateLimit((int) this.cachingTemplateSpinner.getValue()); designerEnvManager.setJoinProductImprove(this.joinProductImprove.isSelected()); -// designerEnvManager.setAutoBackUp(this.autoBackUp.isSelected()); designerEnvManager.setUndoLimit(maxUndoLimit.getSelectedIndex() * SELECTED_INDEX_5); if (maxUndoLimit.getSelectedIndex() == SELECTED_INDEX_5) { @@ -648,21 +637,6 @@ public class PreferencePane extends BasicPane { } - /* - * 得到所选语言的int值 - */ - private int getLanguageInt() { - int l = 0; - String lang = (String) this.languageComboBox.getSelectedItem(); - for (int i = 0; i < LANGUAGE.size(); i++) { - if (ComparatorUtils.equals(lang, LANGUAGE.get(i))) { - l = i; - break; - } - } - return l; - } - // 如果语言设置改变了,则显示重启对话框 public void showRestartDialog() { @@ -689,11 +663,7 @@ public class PreferencePane extends BasicPane { return showWindow(window, new DialogActionAdapter() { @Override public void doOk() { - if (languageComboBox.getSelectedIndex() != designerEnvLanguageIndex) { - languageChanged = true; - } else { - languageChanged = false; - } + languageChanged = !ComparatorUtils.equals(languageComboBox.getSelectedItem(), DesignerEnvManager.getEnvManager(false).getLanguage()); } }); } diff --git a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java index 9b400f052..564b6e669 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java @@ -14,16 +14,15 @@ import com.fr.design.menu.KeySetUtils; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; import com.fr.design.utils.DesignUtils; +import com.fr.event.EventDispatcher; import com.fr.general.GeneralContext; - import com.fr.stable.EnvChangedListener; import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContextCallback; import com.fr.workspace.Workspace; import com.fr.workspace.connect.AuthException; -import javax.swing.JOptionPane; -import javax.swing.UIManager; +import javax.swing.*; import java.awt.event.ActionEvent; import java.util.HashMap; import java.util.Iterator; diff --git a/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java b/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java index 1d98477c2..46aa25450 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/AboutPane.java @@ -10,8 +10,8 @@ import com.fr.design.gui.ilable.BoldFontTextLabel; import com.fr.design.gui.ilable.UILabel; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.general.CloudCenter; +import com.fr.general.GeneralContext; import com.fr.general.GeneralUtils; - import com.fr.stable.ProductConstants; import com.fr.stable.StringUtils; import com.fr.stable.bridge.StableFactory; @@ -72,18 +72,18 @@ public class AboutPane extends JPanel { addPhoneAndQQPane(contentPane); // 官网 - JPanel urlActionPane = getURLActionPane(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Official_Website"), CloudCenter.getInstance().acquireUrlByKind("website." + FRContext.getLocale(), ProductConstants.WEBSITE_URL)); + JPanel urlActionPane = getURLActionPane(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Official_Website"), CloudCenter.getInstance().acquireUrlByKind("website." + GeneralContext.getLocale(), ProductConstants.WEBSITE_URL)); // 支持邮箱 String defaultEmail = CloudCenter.getInstance().acquireUrlByKind("support.email", ProductConstants.SUPPORT_EMAIL); - JPanel emailPane = getEmailActionPane(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Support_Email"), CloudCenter.getInstance().acquireUrlByKind("support.email." + FRContext.getLocale(), defaultEmail)); + JPanel emailPane = getEmailActionPane(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Support_Email"), CloudCenter.getInstance().acquireUrlByKind("support.email." + GeneralContext.getLocale(), defaultEmail)); contentPane.add(urlActionPane); contentPane.add(emailPane); - if (FRContext.getLocale().equals(Locale.CHINA) || FRContext.getLocale().equals(Locale.TAIWAN)){ + if (GeneralContext.getLocale().equals(Locale.CHINA) || GeneralContext.getLocale().equals(Locale.TAIWAN)) { contentPane.add(getRemarkPane()); - } + } if (shouldShowThanks()) { addThankPane(contentPane); @@ -93,13 +93,13 @@ public class AboutPane extends JPanel { private void addPhoneAndQQPane(JPanel contentPane) { BoxCenterAligmentPane boxCenterAlignmentPane; // 英文版不显示服务电话和QQ - if (FRContext.getLocale().equals(Locale.US)) { + if (GeneralContext.getLocale().equals(Locale.US)) { return; } boxCenterAlignmentPane = new BoxCenterAligmentPane(com.fr.design.i18n.Toolkit.i18nText("FR-Designer_Service_Phone") + CloudCenter.getInstance().acquireUrlByKind("service.phone." + FRContext.getLocale(), COMPANY_TELEPHONE)); contentPane.add(boxCenterAlignmentPane); // 繁体版不显示QQ - if (FRContext.getLocale().equals(Locale.TAIWAN)) { + if (GeneralContext.getLocale().equals(Locale.TAIWAN)) { return; } boxCenterAlignmentPane = new BoxCenterAligmentPane("QQ: " + CloudCenter.getInstance().acquireUrlByKind("help.qq")); @@ -110,17 +110,17 @@ public class AboutPane extends JPanel { private boolean shouldShowThanks() { Locale[] hideLocales = {Locale.US, Locale.KOREA, Locale.JAPAN}; for (Locale loc : hideLocales) { - if (FRContext.getLocale().equals(loc)) { + if (GeneralContext.getLocale().equals(loc)) { return false; } } return true; } - private JPanel getRemarkPane(){ - String remark = com.fr.design.i18n.Toolkit.i18nText("Fine-Designer_About_Remark_Info",PRESIDENT_PHONE); + private JPanel getRemarkPane() { + String remark = com.fr.design.i18n.Toolkit.i18nText("Fine-Designer_About_Remark_Info", PRESIDENT_PHONE); UILabel label = new UILabel(); - label.setSize(new Dimension(580,30)); + label.setSize(new Dimension(580, 30)); //用THML标签进行拼接,以实现自动换行 StringBuilder builder = new StringBuilder(""); @@ -139,12 +139,12 @@ public class AboutPane extends JPanel { break; } } - builder.append(chars, start, len-1).append("
"); + builder.append(chars, start, len - 1).append("
"); start = start + len - 1; len = 0; } //拼接剩余部分 - builder.append(chars, start, remark.length()-start); + builder.append(chars, start, remark.length() - start); builder.append(""); JPanel jPanel = FRGUIPaneFactory.createNormalFlowInnerContainer_S_Pane(); @@ -184,7 +184,7 @@ public class AboutPane extends JPanel { StringUtils.BLANK, ProductConstants.RELEASE_VERSION, BUILD_PREFIX); } - private JPanel getEmailActionPane(final String desc, final String mailTo){ + private JPanel getEmailActionPane(final String desc, final String mailTo) { ActionLabel emailLabel = new ActionLabel(mailTo); emailLabel.addActionListener(new ActionListener() { @@ -204,7 +204,7 @@ public class AboutPane extends JPanel { return panel; } - private JPanel getURLActionPane(final String desc, final String url){ + private JPanel getURLActionPane(final String desc, final String url) { ActionLabel actionLabel = new ActionLabel(url); actionLabel.addActionListener(new ActionListener() { @Override diff --git a/designer-base/src/main/java/com/fr/design/actions/help/TutorialAction.java b/designer-base/src/main/java/com/fr/design/actions/help/TutorialAction.java index 4e3ea8320..c0e255af7 100644 --- a/designer-base/src/main/java/com/fr/design/actions/help/TutorialAction.java +++ b/designer-base/src/main/java/com/fr/design/actions/help/TutorialAction.java @@ -6,6 +6,7 @@ import com.fr.base.Utils; import com.fr.design.actions.UpdateAction; import com.fr.design.menu.MenuKeySet; import com.fr.general.CloudCenter; +import com.fr.general.GeneralContext; import com.fr.general.http.HttpToolbox; import com.fr.stable.CommonUtils; import com.fr.stable.ProductConstants; @@ -78,7 +79,7 @@ public class TutorialAction extends UpdateAction { // 生成帮助文档 sitecenter key, help.zh_CN.10 protected String createDocKey() { - String locale = FRContext.getLocale().toString(); + String locale = GeneralContext.getLocale().toString(); return CommonUtils.join(new String[]{ "help", locale, ProductConstants.MAIN_VERSION }, "."); } diff --git a/designer-base/src/main/java/com/fr/design/editor/editor/DateEditor.java b/designer-base/src/main/java/com/fr/design/editor/editor/DateEditor.java index d112f7fe0..24f1111f3 100644 --- a/designer-base/src/main/java/com/fr/design/editor/editor/DateEditor.java +++ b/designer-base/src/main/java/com/fr/design/editor/editor/DateEditor.java @@ -6,9 +6,9 @@ package com.fr.design.editor.editor; import com.fr.base.FRContext; import com.fr.design.gui.date.UIDatePicker; import com.fr.design.layout.FRGUIPaneFactory; +import com.fr.general.GeneralContext; import javax.swing.*; - import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; @@ -60,9 +60,9 @@ public class DateEditor extends Editor { this.setLayout(FRGUIPaneFactory.createBorderLayout()); uiDatePicker = new UIDatePicker(); if (format) { - int dateStyle = (FRContext.getLocale() == Locale.ENGLISH - || FRContext.getLocale() == Locale.US - || FRContext.getLocale() == Locale.UK) ? uiDatePicker.STYLE_EN_DATE : uiDatePicker.STYLE_CN_DATE; + int dateStyle = (GeneralContext.getLocale() == Locale.ENGLISH + || GeneralContext.getLocale() == Locale.US + || GeneralContext.getLocale() == Locale.UK) ? uiDatePicker.STYLE_EN_DATE : uiDatePicker.STYLE_CN_DATE; uiDatePicker.setStyle(dateStyle); uiDatePicker.setEditable(false); } diff --git a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java index 0d5622d6e..72ff97776 100644 --- a/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java +++ b/designer-base/src/main/java/com/fr/design/formula/FormulaPane.java @@ -20,6 +20,7 @@ import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.mainframe.DesignerContext; import com.fr.design.utils.gui.GUICoreUtils; +import com.fr.log.FineLoggerFactory; import com.fr.parser.FRLexer; import com.fr.parser.FRParser; import com.fr.stable.EncodeConstants; @@ -774,7 +775,7 @@ public class FormulaPane extends BasicPane implements KeyListener, UIFormula { desBuf = getText((TextUserObject) selectedValue, path); } } catch (IOException exp) { - FRContext.getLogger().error(exp.getMessage(), exp); + FineLoggerFactory.getLogger().error(exp.getMessage(), exp); } descriptionTextArea.setText(desBuf.toString()); descriptionTextArea.moveCaretPosition(0); diff --git a/designer-base/src/main/java/com/fr/design/formula/FunctionNAD.java b/designer-base/src/main/java/com/fr/design/formula/FunctionNAD.java index fe52fb1dc..411d0c8a6 100644 --- a/designer-base/src/main/java/com/fr/design/formula/FunctionNAD.java +++ b/designer-base/src/main/java/com/fr/design/formula/FunctionNAD.java @@ -1,6 +1,6 @@ package com.fr.design.formula; -import com.fr.base.FRContext; +import com.fr.general.GeneralContext; import com.fr.script.CalculatorEmbeddedFunction; import com.fr.stable.StringUtils; import com.fr.stable.script.Function; @@ -10,29 +10,29 @@ import java.util.Locale; public class FunctionNAD extends AbstractNameAndDescription { - private Function fn; - - FunctionNAD(Function fn) { - this.fn = fn; - } - - public String getName() { - return fn == null ? StringUtils.EMPTY : fn.getClass().getSimpleName(); - } - - public String getDesc() { - if (fn == null) { - return StringUtils.EMPTY; - } - Locale locale = FRContext.getLocale(); - String describtion = fn.getDescription(locale); - if (describtion.startsWith(CalculatorEmbeddedFunction.LOCALE_PREFIX)) { - // 老的自定义函数兼容, 没有重写getDescription - return Locale.CHINA.equals(locale) ? fn.getCN() : fn.getEN(); - } - - return describtion; - } + private Function fn; + + FunctionNAD(Function fn) { + this.fn = fn; + } + + public String getName() { + return fn == null ? StringUtils.EMPTY : fn.getClass().getSimpleName(); + } + + public String getDesc() { + if (fn == null) { + return StringUtils.EMPTY; + } + Locale locale = GeneralContext.getLocale(); + String describtion = fn.getDescription(locale); + if (describtion.startsWith(CalculatorEmbeddedFunction.LOCALE_PREFIX)) { + // 老的自定义函数兼容, 没有重写getDescription + return Locale.CHINA.equals(locale) ? fn.getCN() : fn.getEN(); + } + + return describtion; + } @Override public String searchResult(String keyWord, boolean findDescription) { diff --git a/designer-base/src/main/java/com/fr/design/mainframe/TemplatePane.java b/designer-base/src/main/java/com/fr/design/mainframe/TemplatePane.java index b569e054e..69192af7f 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/TemplatePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/TemplatePane.java @@ -13,6 +13,7 @@ import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ilable.UILabel; import com.fr.design.utils.DesignUtils; import com.fr.env.EnvListPane; +import com.fr.event.EventDispatcher; import com.fr.general.GeneralContext; import com.fr.general.IOUtils; @@ -20,6 +21,7 @@ import com.fr.stable.EnvChangedListener; import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContextCallback; import com.fr.workspace.Workspace; +import com.fr.workspace.WorkspaceEvent; import com.fr.workspace.connect.AuthException; import javax.swing.*; diff --git a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java index fcf8b7ddc..ea6d694c7 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/toolbar/ToolBarMenuDock.java @@ -50,7 +50,6 @@ import com.fr.design.remote.action.RemoteDesignAuthorityManagerAction; import com.fr.design.utils.ThemeUtils; import com.fr.general.ComparatorUtils; import com.fr.general.GeneralContext; - import com.fr.plugin.context.PluginContext; import com.fr.plugin.context.PluginRuntime; import com.fr.plugin.manage.PluginFilter; @@ -224,7 +223,7 @@ public abstract class ToolBarMenuDock { // 添加帮助菜单 menuList.add(createHelpMenuDef()); - if (FRContext.getLocale() == Locale.CHINA || FRContext.getLocale() == Locale.TAIWAN) { + if (GeneralContext.getLocale() == Locale.CHINA || GeneralContext.getLocale() == Locale.TAIWAN) { // 添加社区菜单 addCommunityMenuDef(menuList); } @@ -272,7 +271,7 @@ public abstract class ToolBarMenuDock { } public void addCommunityMenuDef(java.util.List menuList) { - Locale locale = FRContext.getLocale(); + Locale locale = GeneralContext.getLocale(); Locale[] locales = supportCommunityLocales(); for (int i = 0; i < locales.length; i++) { if (locale.equals(locales[i])) { @@ -451,7 +450,7 @@ public abstract class ToolBarMenuDock { java.util.List shortCuts = new ArrayList(); shortCuts.add(new WebDemoAction()); // 英文,把 video 和帮助文档放到 Help 下面 - if (FRContext.getLocale().equals(Locale.US)) { + if (GeneralContext.getLocale().equals(Locale.US)) { shortCuts.add(new VideoAction()); shortCuts.add(new TutorialAction()); } diff --git a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java index b9f720e26..497dd07e0 100644 --- a/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java +++ b/designer-base/src/main/java/com/fr/design/utils/DesignUtils.java @@ -226,7 +226,7 @@ public class DesignUtils { } //先初始化的设计器locale, 后初始化lookandfeel.如果顺序改了, 这边也要调整. - Locale designerLocale = FRContext.getLocale(); + Locale designerLocale = GeneralContext.getLocale(); String file = com.fr.design.i18n.Toolkit.i18nText("FR-Designer_File"); char displayChar = file.charAt(0); if (!guiFRFont.canDisplay(displayChar)) { diff --git a/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java b/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java index 65a3e78df..b7d123d66 100644 --- a/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java +++ b/designer-base/src/test/java/com/fr/design/DesignerEnvManagerTest.java @@ -1,33 +1,20 @@ package com.fr.design; -import com.fr.locale.InterProviderFactory; import junit.framework.TestCase; -import java.util.HashSet; import java.util.Locale; public class DesignerEnvManagerTest extends TestCase{ public void testGetLocale() { DesignerEnvManager envManager = new DesignerEnvManager(); - assertEquals("默认值", envManager.getLocale(), Locale.CHINA); + assertEquals("默认值", envManager.getLanguage(), Locale.SIMPLIFIED_CHINESE); - HashSet result = new HashSet<>(); - Locale[] locales = envManager.supportLocale(); - int len = locales.length; - assertEquals(len, InterProviderFactory.getProvider().getSupportLocaleMap().size()); - for (int i = 0; i < len; i++) { - envManager.setLanguage(i + 1); - Locale locale = envManager.getLocale(); - result.add(locale); - } - assertEquals("每个int都有对应的locale", result.size(), len); + envManager.setLanguage(Locale.US); + assertEquals("上边界", envManager.getLanguage(), Locale.US); - envManager.setLanguage(998); - assertEquals("上边界", envManager.getLocale(), Locale.CHINA); - - envManager.setLanguage(-998); - assertEquals("下边界", envManager.getLocale(), Locale.CHINA); + envManager.setLanguage(Locale.SIMPLIFIED_CHINESE); + assertEquals("下边界", envManager.getLanguage(), Locale.SIMPLIFIED_CHINESE); } } diff --git a/designer-base/src/test/java/com/fr/design/actions/help/TutorialActionTest.java b/designer-base/src/test/java/com/fr/design/actions/help/TutorialActionTest.java index e538a637e..7e4dad651 100644 --- a/designer-base/src/test/java/com/fr/design/actions/help/TutorialActionTest.java +++ b/designer-base/src/test/java/com/fr/design/actions/help/TutorialActionTest.java @@ -13,20 +13,17 @@ public class TutorialActionTest extends TestCase{ TutorialAction action = new TutorialAction(); GeneralContext.setLocale(Locale.US); String enKey = action.createDocKey(); - assertTrue(enKey.indexOf(Locale.US.toString()) != -1); - assertTrue(enKey.indexOf(ProductConstants.MAIN_VERSION) != -1); + assertTrue(enKey.contains(Locale.US.toString())); + assertTrue(enKey.contains(ProductConstants.MAIN_VERSION)); GeneralContext.setLocale(Locale.CHINA); String zhKey = action.createDocKey(); - assertTrue(zhKey.indexOf(Locale.CHINA.toString()) != -1); + assertTrue(zhKey.contains(Locale.CHINA.toString())); Locale pt = new Locale("pt", "PT"); GeneralContext.setLocale(pt); String ptKey = action.createDocKey(); - assertTrue(ptKey.indexOf(pt.toString()) != -1); - - GeneralContext.setLanguage(998); - assertTrue(action.createDocKey().indexOf(Locale.CHINA.toString()) != -1); + assertTrue(ptKey.contains(pt.toString())); } public void testServerOnline() { diff --git a/designer-realize/src/main/java/com/fr/start/CollectUserInformationDialog.java b/designer-realize/src/main/java/com/fr/start/CollectUserInformationDialog.java index 5ffefb024..c319af341 100644 --- a/designer-realize/src/main/java/com/fr/start/CollectUserInformationDialog.java +++ b/designer-realize/src/main/java/com/fr/start/CollectUserInformationDialog.java @@ -1,6 +1,5 @@ package com.fr.start; -import com.fr.base.FRContext; import com.fr.design.DesignerEnvManager; import com.fr.design.dialog.UIDialog; import com.fr.design.gui.ibutton.UIButton; @@ -14,18 +13,12 @@ import com.fr.design.mainframe.ActiveKeyGenerator; import com.fr.design.utils.gui.GUICoreUtils; import com.fr.general.CloudCenter; import com.fr.general.ComparatorUtils; - +import com.fr.general.GeneralContext; import com.fr.stable.OperatingSystem; -import javax.swing.BorderFactory; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.WindowConstants; +import javax.swing.*; import javax.swing.border.TitledBorder; -import java.awt.BorderLayout; -import java.awt.Desktop; -import java.awt.Dimension; -import java.awt.Frame; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; @@ -147,7 +140,7 @@ public class CollectUserInformationDialog extends UIDialog { private void getKeyAction() { - Locale locale = FRContext.getLocale(); + Locale locale = GeneralContext.getLocale(); String url = EN_LOGIN_HTML; if (ComparatorUtils.equals(locale, Locale.TAIWAN)) { url = TW_LOGIN_HTML; diff --git a/designer-realize/src/main/java/com/fr/start/SplashContext.java b/designer-realize/src/main/java/com/fr/start/SplashContext.java index 18c7085a7..ebdad4c28 100644 --- a/designer-realize/src/main/java/com/fr/start/SplashContext.java +++ b/designer-realize/src/main/java/com/fr/start/SplashContext.java @@ -1,11 +1,10 @@ package com.fr.start; -import com.fr.base.FRContext; import com.fr.design.mainframe.bbs.BBSConstants; import com.fr.event.Event; import com.fr.event.EventDispatcher; import com.fr.event.Listener; - +import com.fr.general.GeneralContext; import com.fr.module.ModuleEvent; import com.fr.stable.StringUtils; @@ -135,7 +134,7 @@ public class SplashContext { private boolean shouldShowThanks() { Locale[] hideLocales = {Locale.CHINA, Locale.TAIWAN}; for (Locale loc : hideLocales) { - if (FRContext.getLocale().equals(loc)) { + if (GeneralContext.getLocale().equals(loc)) { return true; } } diff --git a/designer-realize/src/main/java/com/fr/start/module/PreStartActivator.java b/designer-realize/src/main/java/com/fr/start/module/PreStartActivator.java index 779747990..1f7db5622 100644 --- a/designer-realize/src/main/java/com/fr/start/module/PreStartActivator.java +++ b/designer-realize/src/main/java/com/fr/start/module/PreStartActivator.java @@ -64,7 +64,7 @@ public class PreStartActivator extends Activator { private void initLanguage() { //这两句的位置不能随便调换,因为会影响语言切换的问题 - GeneralContext.setLocale(DesignerEnvManager.getEnvManager(false).getLocale()); + GeneralContext.setLocale(DesignerEnvManager.getEnvManager(false).getLanguage()); } @Override From c80dcdf0e7946ba7c4fd9c1bd46639988f1b2e99 Mon Sep 17 00:00:00 2001 From: ju Date: Tue, 31 Jul 2018 15:33:08 +0800 Subject: [PATCH 38/38] =?UTF-8?q?REPORT-10202=20=E6=B2=A1=E7=94=A8?= =?UTF-8?q?=E7=9A=84=E7=9B=91=E5=90=AC=EF=BC=8C=E5=88=A0=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fr/design/actions/file/SwitchExistEnv.java | 15 --------------- .../design/file/HistoryTemplateListPane.java | 2 -- .../com/fr/design/mainframe/TemplatePane.java | 18 ++++++++++++++---- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java index 9b400f052..d32a1aa67 100644 --- a/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java +++ b/designer-base/src/main/java/com/fr/design/actions/file/SwitchExistEnv.java @@ -9,14 +9,10 @@ import com.fr.design.env.DesignerWorkspaceGenerator; import com.fr.design.env.DesignerWorkspaceInfo; import com.fr.design.file.HistoryTemplateListPane; import com.fr.design.mainframe.DesignerContext; -import com.fr.design.mainframe.JTemplate; import com.fr.design.menu.KeySetUtils; import com.fr.design.menu.MenuDef; import com.fr.design.menu.SeparatorDef; import com.fr.design.utils.DesignUtils; -import com.fr.general.GeneralContext; - -import com.fr.stable.EnvChangedListener; import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContextCallback; import com.fr.workspace.Workspace; @@ -36,17 +32,6 @@ public class SwitchExistEnv extends MenuDef { this.setName(getMenuKeySet().getMenuName()); this.setHasScrollSubMenu(true); initMenuDef(); - JTemplate t = HistoryTemplateListPane.getInstance().getCurrentEditingTemplate(); - if (t != null) { - GeneralContext.addEnvWillChangedListener( - t.getPath(), - new EnvChangedListener() { - public void envChanged() { - SwitchExistEnv.this.clearShortCuts(); - initMenuDef(); - } - }); - } } private void initMenuDef() { diff --git a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListPane.java b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListPane.java index 12dad2ea8..6d828ccaf 100644 --- a/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListPane.java +++ b/designer-base/src/main/java/com/fr/design/file/HistoryTemplateListPane.java @@ -114,7 +114,6 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C public void closeSelectedReport(JTemplate selected) { DesignModuleFactory.clearChartPropertyPane(); DesignTableDataManager.closeTemplate(selected); - GeneralContext.removeEnvWillChangedListener(selected.getPath()); if (contains(selected) == -1) { return; } @@ -139,7 +138,6 @@ public class HistoryTemplateListPane extends JPanel implements FileOperations, C public void closeVirtualSelectedReport(JTemplate selected) { DesignModuleFactory.clearChartPropertyPane(); DesignTableDataManager.closeTemplate(selected); - GeneralContext.removeEnvWillChangedListener(selected.getPath()); if (contains(selected) == -1) { return; } diff --git a/designer-base/src/main/java/com/fr/design/mainframe/TemplatePane.java b/designer-base/src/main/java/com/fr/design/mainframe/TemplatePane.java index b569e054e..a7a466bdb 100644 --- a/designer-base/src/main/java/com/fr/design/mainframe/TemplatePane.java +++ b/designer-base/src/main/java/com/fr/design/mainframe/TemplatePane.java @@ -15,15 +15,26 @@ import com.fr.design.utils.DesignUtils; import com.fr.env.EnvListPane; import com.fr.general.GeneralContext; import com.fr.general.IOUtils; - import com.fr.stable.EnvChangedListener; import com.fr.workspace.WorkContext; import com.fr.workspace.WorkContextCallback; import com.fr.workspace.Workspace; import com.fr.workspace.connect.AuthException; -import javax.swing.*; -import java.awt.*; +import javax.swing.BorderFactory; +import javax.swing.Icon; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.GradientPaint; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; @@ -132,7 +143,6 @@ public class TemplatePane extends JPanel implements MouseListener { final String selectedName = envListPane.updateEnvManager(); DesignerEnvManager envManager = DesignerEnvManager.getEnvManager(); DesignerWorkspaceInfo selectedEnv = envManager.getWorkspaceInfo(selectedName); - GeneralContext.fireEnvWillChangeListener(); try { Workspace workspace = DesignerWorkspaceGenerator.generate(selectedEnv); if (workspace == null) {