Browse Source

REPORT-80695 【模板全局级别查找替换二期】UI界面

feature/x
Destiny.Lin 2 years ago
parent
commit
37961dbec6
  1. 15
      designer-base/src/main/java/com/fr/design/gui/icheckbox/UICheckBox.java
  2. 254
      designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java
  3. 442
      designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java
  4. 6
      designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java
  5. 62
      designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java
  6. 7
      designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java
  7. 77
      designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java
  8. 46
      designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java

15
designer-base/src/main/java/com/fr/design/gui/icheckbox/UICheckBox.java

@ -139,6 +139,15 @@ public class UICheckBox extends JCheckBox implements UIObserver, GlobalNameObser
return true; return true;
} }
/**
* 获取UICheckBox的UI层可以用于设置UI
*
* @return UICheckBoxUI
*/
public UICheckBoxUI getUICheckBoxUI(){
return new UICheckBoxUI();
}
private class UICheckBoxUI extends MetalCheckBoxUI { private class UICheckBoxUI extends MetalCheckBoxUI {
@Override @Override
public synchronized void paint(Graphics g, JComponent c) { public synchronized void paint(Graphics g, JComponent c) {
@ -186,9 +195,9 @@ public class UICheckBox extends JCheckBox implements UIObserver, GlobalNameObser
g2d.drawRoundRect(iconRect.x, iconRect.y, iconRect.width - 1, iconRect.height - 1, UIConstants.ARC, UIConstants.ARC); g2d.drawRoundRect(iconRect.x, iconRect.y, iconRect.width - 1, iconRect.height - 1, UIConstants.ARC, UIConstants.ARC);
} }
if (model.isSelected()) { if (model.isSelected()) {
UIConstants.YES_ICON.paintIcon(c, g, iconRect.x + 2, iconRect.y + 2); UIConstants.YES_ICON.paintIcon(c, g, iconRect.x + 2, iconRect.y + 2);
} }
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);
// Draw the Text // Draw the Text

254
designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceMainDialog.java

@ -3,6 +3,7 @@ package com.fr.design.actions.replace.ui;
import com.fr.design.actions.replace.action.ShowSearchResultAction; import com.fr.design.actions.replace.action.ShowSearchResultAction;
import com.fr.design.actions.replace.action.setting.SettingController;
import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.info.Info;
import com.fr.design.actions.replace.utils.ShowValueUtils; import com.fr.design.actions.replace.utils.ShowValueUtils;
@ -42,7 +43,8 @@ import static com.fr.design.actions.replace.ui.ITTableEditorPane.getEditTable;
* created by Destiny.Lin on 2022-08-10 * created by Destiny.Lin on 2022-08-10
*/ */
public class ITReplaceMainDialog extends UIDialog { public class ITReplaceMainDialog extends UIDialog {
List<? extends Info> searchResultList = new ArrayList<>(); private static List<? extends Info> searchContentResultList = new ArrayList<>();
private static List<? extends Info> searchSettingResultList = new ArrayList<>();
private static boolean ITReplaceFlag = false; private static boolean ITReplaceFlag = false;
private static boolean matched = false; private static boolean matched = false;
private static volatile ITReplaceMainDialog instance = null; private static volatile ITReplaceMainDialog instance = null;
@ -53,9 +55,19 @@ public class ITReplaceMainDialog extends UIDialog {
private ITReplaceWestPanel westPanel; private ITReplaceWestPanel westPanel;
private boolean searchFlag; private boolean searchFlag;
private String searchStr; private String searchStr;
private String settingInputStr;
private String settingExtraStr;
private static final int FIRST_ROW = 0; private static final int FIRST_ROW = 0;
private static final int NONE = 0;
public static int selectCount = 0; public static int selectCount = 0;
public static int MAIN_PANEL_WIDTH = 929; public static int MAIN_PANEL_WIDTH = 929;
public static int replaceContentNum = 0;
public static int replaceSettingNum = 0;
public static int contentReplaceCount = 0;
public static int contentReplaceFailedCount = 0;
public static int settingReplaceCount = 0;
public static int settingReplaceFailedCount = 0;
public ITReplaceMainDialog() { public ITReplaceMainDialog() {
super(DesignerContext.getDesignerFrame()); super(DesignerContext.getDesignerFrame());
@ -131,15 +143,14 @@ public class ITReplaceMainDialog extends UIDialog {
((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).addActionListener(new ActionListener() { ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
search(); search4Content();
} }
}); });
northPane.getSearchButton().addActionListener(new ActionListener() { northPane.getSearchButton().addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
search(); search4Content();
} }
}); });
@ -147,11 +158,24 @@ public class ITReplaceMainDialog extends UIDialog {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (isSearchFlag()) { if (isSearchFlag()) {
replace(); replace4Content();
} }
} }
}); });
center.add(northPane.getScrollPane(), BorderLayout.NORTH);
northPane.getSearchSettingButton().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
search4Setting();
}
});
northPane.getReplaceSettingButton().addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
replace4Setting();
}
});
center.add(ITReplaceNorthPanel.getCardPanel(), BorderLayout.NORTH);
center.add(southPanel.getTableEditorPane(), BorderLayout.CENTER); center.add(southPanel.getTableEditorPane(), BorderLayout.CENTER);
add(westPanel.getLeftPanel(), BorderLayout.WEST); add(westPanel.getLeftPanel(), BorderLayout.WEST);
//主体部分 //主体部分
@ -162,24 +186,27 @@ public class ITReplaceMainDialog extends UIDialog {
/** /**
* 替换 * 替换
*/ */
private void replace() { private void replace4Content() {
String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText(); String searchStr = ((UITextField) (northPane.getFindInputCombobox().getEditor().getEditorComponent())).getText();
String replaceStr = ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).getText(); String replaceStr = ((UITextField) (northPane.getReplaceInputCombobox().getEditor().getEditorComponent())).getText();
//替换内容为空需要触发搜索 clearContentCount();
if (isITReplaceValid() && checkTemplateChanged(searchResultList)) { if (isITReplaceValid() && checkTemplateChanged(searchContentResultList)) {
if (StringUtils.equals(getSearchStr(), searchStr) && StringUtils.isNotEmpty(replaceStr)) { if (StringUtils.equals(getSearchStr(), searchStr) && StringUtils.isNotEmpty(replaceStr)) {
HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true); HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true);
for (Info info : searchResultList) { for (Info info : searchContentResultList) {
if (info.getContent().isSelected()) { if (isAllow2Replace(info)) {
info.setValue(info, searchStr, replaceStr, info.getContent().getOperatorArray()); info.setValue(info, searchStr, replaceStr, info.getContent().getOperatorArray());
info.getContent().setReplaced(true);
contentReplaceCount++;
} }
} }
northPane.getResultLabel().setText(ShowValueUtils.getResultTip(searchContentResultList.size(), contentReplaceCount, contentReplaceFailedCount));
southPanel.getTableEditorPane().update(); southPanel.getTableEditorPane().update();
northPane.refreshReplaceInputComboBoxItems(); northPane.refreshReplaceInputComboBoxItems();
ITTableEditorPane.getEditTable().repaint(); ITTableEditorPane.getEditTable().repaint();
setSearchFlag(false); } else {
search4Content();
} }
search();
} else { } else {
Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Design_Basic_Cancel")}; Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Design_Basic_Cancel")};
int optionSelected = FineJOptionPane.showOptionDialog( int optionSelected = FineJOptionPane.showOptionDialog(
@ -195,16 +222,25 @@ public class ITReplaceMainDialog extends UIDialog {
); );
//如果选择了重新查找,则再查找一遍 //如果选择了重新查找,则再查找一遍
if (optionSelected == 0) { if (optionSelected == 0) {
search(); search4Content();
} }
} }
}
/**
* 是否能够替换
*
* @param info 存储信息的数据结构
* @return 能则返回true
*/
private boolean isAllow2Replace(Info info) {
return info.getContent().isSelected() && !info.getContent().isReplaced();
} }
private Boolean checkTemplateChanged(List<? extends Info> searchResultList) { private Boolean checkTemplateChanged(List<? extends Info> searchResultList) {
for (Info info : searchResultList) { for (Info info : searchResultList) {
if (!info.checkValid()) { if (!info.getContent().isReplaced() && !info.checkValid()) {
return false; return false;
} }
} }
@ -281,10 +317,11 @@ public class ITReplaceMainDialog extends UIDialog {
} }
/** /**
* 搜索 * 搜索模板内容
*/ */
public void search() { public void search4Content() {
ITTableEditor itTableEditor = southPanel.getItTableEditor(); ITTableEditor itTableEditor = southPanel.getItTableEditor();
clearContentCount();
if (JTemplate.isValid(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate())) { if (JTemplate.isValid(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate())) {
JTemplate jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate(); JTemplate jTemplate = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate();
templateID = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID(); templateID = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID();
@ -299,24 +336,25 @@ public class ITReplaceMainDialog extends UIDialog {
ShowSearchResultAction searchAction = ShowSearchResultAction.match(GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem())); ShowSearchResultAction searchAction = ShowSearchResultAction.match(GeneralUtils.objectToString(northPane.getFindCombobox().getSelectedItem()));
//搜索 //搜索
if (searchAction != null) { if (searchAction != null) {
searchResultList = searchAction.addMatchResult(searchStr, searchAction.showSearchValue(jTemplate)); searchContentResultList = searchAction.addMatchResult(searchStr, searchAction.showSearchValue(jTemplate));
itTableEditor.add(searchResultList); itTableEditor.add(searchContentResultList);
northPane.getResultLabel().setText("<html>" + Toolkit.i18nText("Fine-Design_Replace_Search_Finish") + "<font color = 'rgb(61,153,249)'>" + searchResultList.size() + "</font>" + Toolkit.i18nText("Fine-Design_Replace_Result")); northPane.getResultLabel().setText(ShowValueUtils.getResultTip(searchContentResultList.size(), contentReplaceCount, contentReplaceFailedCount));
} }
replaceContentNum = 0;
ITTableEditorPane.ITHeaderRenderer renderer = (ITTableEditorPane.ITHeaderRenderer) getEditTable().getTableHeader().getDefaultRenderer(); ITTableEditorPane.ITHeaderRenderer renderer = (ITTableEditorPane.ITHeaderRenderer) getEditTable().getTableHeader().getDefaultRenderer();
//刷新表头,并且重新勾选中表头全选框 //刷新表头,并且重新勾选中表头全选框
renderer.refreshHeader(getEditTable(), true); renderer.refreshHeader(getEditTable(), true);
itTableEditor.fireTableDataChanged(); itTableEditor.fireTableDataChanged();
northPane.refreshFindInputComboBoxItems(); northPane.refreshFindInputComboBoxItems();
setSearchFlag(true); setSearchFlag(true);
selectCount = searchResultList.size(); selectCount = searchContentResultList.size();
//如果有结果,默认选中第一行 //如果有结果,默认选中第一行
if (searchResultList.size() > 0) { if (searchContentResultList.size() > 0) {
getEditTable().addRowSelectionInterval(FIRST_ROW, FIRST_ROW); getEditTable().addRowSelectionInterval(FIRST_ROW, FIRST_ROW);
} }
//更新替换按钮可用性 //更新替换按钮可用性
if (StringUtils.isEmpty(searchStr) || searchResultList.size() == 0) { if (StringUtils.isEmpty(searchStr) || searchContentResultList.size() == 0) {
northPane.getReplaceButton().setEnabled(false); northPane.getReplaceButton().setEnabled(false);
} else { } else {
northPane.getReplaceButton().setEnabled(true); northPane.getReplaceButton().setEnabled(true);
@ -330,6 +368,126 @@ public class ITReplaceMainDialog extends UIDialog {
} }
/**
* 搜索设置项
*/
public void search4Setting() {
ITTableEditor settingEditor = southPanel.getItTableEditor();
templateID = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTarget().getTemplateID();
templateName = HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().getTemplateName();
clearSettingCount();
if (JTemplate.isValid(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate())) {
String firstStr = GeneralUtils.objectToString(northPane.getFindSettingComboBox().getSelectedItem());
String secondStr = GeneralUtils.objectToString(northPane.getFindSettingInputComboBox().getSelectedItem());
String thirdStr = GeneralUtils.objectToString(northPane.getFindExtraSettingComboBox().getSelectedItem());
setSettingInputStr(secondStr);
setSettingExtraStr(thirdStr);
SettingController controller = SettingController.match(firstStr);
if (controller != null) {
searchSettingResultList = controller.addMatchResult(controller.showSearchValue(HistoryTemplateListCache.getInstance().getCurrentEditingTemplate()), secondStr, thirdStr);
settingEditor.clear();
settingEditor.add(searchSettingResultList);
ITTableEditorPane.ITHeaderRenderer renderer = (ITTableEditorPane.ITHeaderRenderer) getEditTable().getTableHeader().getDefaultRenderer();
renderer.refreshHeader(getEditTable(), true);
settingEditor.fireTableDataChanged();
}
//如果有结果,默认选中第一行
if (searchSettingResultList.size() > 0) {
getEditTable().addRowSelectionInterval(FIRST_ROW, FIRST_ROW);
}
northPane.getSettingResultLabel().setText(ShowValueUtils.getResultTip(searchSettingResultList.size(), settingReplaceCount, settingReplaceFailedCount));
}
}
/**
* 替换设置项
*/
public void replace4Setting() {
String firstStr = GeneralUtils.objectToString(northPane.getFindSettingComboBox().getSelectedItem());
String inputStr = GeneralUtils.objectToString(northPane.getFindSettingInputComboBox().getSelectedItem());
String extraStr = GeneralUtils.objectToString(northPane.getFindExtraSettingComboBox().getSelectedItem());
clearSettingCount();
if (isITReplaceValid() && !isSettingEverChanged(searchSettingResultList, firstStr, inputStr, extraStr)) {
if (isInputStrValid(inputStr, extraStr)) {
String secondStr = GeneralUtils.objectToString(northPane.getReplaceSettingInputComboBox().getSelectedItem());
String thirdStr = GeneralUtils.objectToString(northPane.getReplaceExtraSettingComboBox().getSelectedItem());
HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified(true);
for (Info info : searchSettingResultList) {
if (info.getContent().isSelected()) {
SettingController controller = SettingController.match(firstStr);
if (controller != null) {
controller.replace(info, secondStr, thirdStr);
info.getContent().setReplaced(true);
settingReplaceCount++;
}
}
}
northPane.getSettingResultLabel().setText(ShowValueUtils.getResultTip(searchSettingResultList.size(), settingReplaceCount, settingReplaceFailedCount));
southPanel.getTableEditorPane().update();
ITTableEditorPane.getEditTable().repaint();
HistoryTemplateListCache.getInstance().getCurrentEditingTemplate().fireTargetModified();
} else {
search4Setting();
}
} else {
Object[] options = new Object[]{Toolkit.i18nText("Fine-Design_Replace_Search_Again"), Toolkit.i18nText("Fine-Design_Basic_Cancel")};
int optionSelected = FineJOptionPane.showOptionDialog(
ITReplaceMainDialog.this,
Toolkit.i18nText("Fine-Design_Replace_Message"),
Toolkit.i18nText("Fine-Design_Basic_Tool_Tips"),
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.ERROR_MESSAGE,
null,
// 如果传null, 则按钮为 optionType 类型所表示的按钮(也就是确认对话框)
options,
options[0]
);
//如果选择了重新查找,则再查找一遍
if (isSelectSearch(optionSelected)) {
search4Setting();
}
}
}
private boolean isSelectSearch(int optionSelected) {
return optionSelected == NONE;
}
/**
* 用户的输入是否更改
*
* @param inputStr 用户的一级输入框
* @param extraStr 用户的二级输入框
* @return 没更改过返回true
*/
public boolean isInputStrValid(String inputStr, String extraStr) {
return StringUtils.equals(inputStr, getSettingInputStr()) && StringUtils.equals(extraStr, getSettingExtraStr());
}
/**
* 设置项的内容是否更改过
*
* @param searchSettingResultList 数据
* @param controllerMatch controller的类型
* @param inputStr 用户的一级输入框
* @param extraStr 用户的二级输入框
* @return 更改过返回true
*/
public boolean isSettingEverChanged(List<? extends Info> searchSettingResultList, String controllerMatch, String inputStr, String extraStr) {
for (Info info : searchSettingResultList) {
if (info.getContent().isSelected() && !info.getContent().isReplaced()) {
SettingController controller = SettingController.match(controllerMatch);
if (controller != null && controller.isEverChanged(info, inputStr, extraStr)) {
return true;
}
}
}
return false;
}
public ITReplaceSouthPanel getSouthPanel() { public ITReplaceSouthPanel getSouthPanel() {
return southPanel; return southPanel;
} }
@ -346,10 +504,58 @@ public class ITReplaceMainDialog extends UIDialog {
this.northPane = northPane; this.northPane = northPane;
} }
public String getSettingInputStr() {
return settingInputStr;
}
public void setSettingInputStr(String settingInputStr) {
this.settingInputStr = settingInputStr;
}
public String getSettingExtraStr() {
return settingExtraStr;
}
public void setSettingExtraStr(String settingExtraStr) {
this.settingExtraStr = settingExtraStr;
}
/** /**
* 检测结果是否合法 * 检测结果是否合法
*/ */
@Override @Override
public void checkValid() throws Exception { public void checkValid() throws Exception {
} }
public static List<? extends Info> getSearchContentResultList() {
return searchContentResultList;
}
public void setSearchContentResultList(List<? extends Info> searchContentResultList) {
this.searchContentResultList = searchContentResultList;
}
public static List<? extends Info> getSearchSettingResultList() {
return searchSettingResultList;
}
public void setSearchSettingResultList(List<? extends Info> searchSettingResultList) {
this.searchSettingResultList = searchSettingResultList;
}
/**
* 重置计数
*/
public void clearContentCount() {
contentReplaceCount = NONE;
contentReplaceFailedCount = NONE;
}
/**
* 重置计数
*/
public void clearSettingCount() {
settingReplaceCount = NONE;
settingReplaceFailedCount = NONE;
}
} }

442
designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceNorthPanel.java

@ -1,12 +1,16 @@
package com.fr.design.actions.replace.ui; package com.fr.design.actions.replace.ui;
import com.fr.base.svg.IconUtils; import com.fr.base.svg.IconUtils;
import com.fr.design.actions.replace.action.setting.SettingContent;
import com.fr.design.actions.replace.action.setting.SettingController;
import com.fr.design.data.datapane.TableDataComboBox;
import com.fr.design.gui.ibutton.UIButton; import com.fr.design.gui.ibutton.UIButton;
import com.fr.design.gui.icombobox.UIComboBox; import com.fr.design.gui.icombobox.UIComboBox;
import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField; import com.fr.design.gui.itextfield.UITextField;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
import com.fr.general.GeneralUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
@ -16,11 +20,15 @@ import javax.swing.Icon;
import javax.swing.JCheckBox; import javax.swing.JCheckBox;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.ScrollPaneConstants; import javax.swing.ScrollPaneConstants;
import java.awt.CardLayout;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List;
/** /**
* 上面板 * 上面板
@ -30,7 +38,12 @@ import java.util.Collections;
* created by Destiny.Lin on 2022-09-01 * created by Destiny.Lin on 2022-09-01
*/ */
public class ITReplaceNorthPanel { public class ITReplaceNorthPanel {
private JPanel upPanel; private JPanel upContentPanel;
private JPanel upSettingPanel;
private static JPanel cardPanel;
private static CardLayout cardLayout;
//content
private UILabel findLabel; private UILabel findLabel;
private UILabel rangeLabel; private UILabel rangeLabel;
private UILabel resultLabel; private UILabel resultLabel;
@ -38,12 +51,28 @@ public class ITReplaceNorthPanel {
private UIComboBox rangeCombobox; private UIComboBox rangeCombobox;
private JCheckBox matchRadioButton; private JCheckBox matchRadioButton;
private UILabel iconLabel; private UILabel iconLabel;
private UIComboBox findInputCombobox; private UIComboBox findInputCombobox;
private UIComboBox replaceInputCombobox; private UIComboBox replaceInputCombobox;
private UIScrollPane scrollPane; private UIScrollPane contentScrollPane;
private UIScrollPane settingScrollPane;
private UIButton replaceButton; private UIButton replaceButton;
private UIButton searchButton; private UIButton searchButton;
//setting
private UILabel iconSettingLabel;
private UILabel findSettingLabel;
private UILabel rangeSettingLabel;
private UILabel settingResultLabel;
private UIComboBox rangeSettingComboBox;
private UIComboBox findSettingComboBox;
private UIComboBox findSettingInputComboBox;
private UIComboBox replaceSettingInputComboBox;
private UIComboBox findExtraSettingComboBox;
private UIComboBox replaceExtraSettingComboBox;
private TableDataComboBox tableDataComboBox;
private UIButton replaceSettingButton;
private UIButton searchSettingButton;
private static double rate = 1.00; private static double rate = 1.00;
//存储的5次最近输入 //存储的5次最近输入
@ -59,6 +88,10 @@ public class ITReplaceNorthPanel {
private static final int FIRST_X = 20, SECOND_X = 80; private static final int FIRST_X = 20, SECOND_X = 80;
private static final int LABEL_WIDTH = 60; private static final int LABEL_WIDTH = 60;
private static final Icon CHANGE_ICON = IconUtils.readIcon("/com/fr/design/images/replace/change_normal.svg"); private static final Icon CHANGE_ICON = IconUtils.readIcon("/com/fr/design/images/replace/change_normal.svg");
private static final String[] rangeItems = new String[]{Toolkit.i18nText("Fine-Design_Basic_Export_JS_Template_Current")};
public static final String CARD_CONTENT = "Content";
public static final String CARD_SETTING = "setting";
private int findLabelX, findLabelY, findLabelWidth, findLabelHeight; private int findLabelX, findLabelY, findLabelWidth, findLabelHeight;
@ -74,9 +107,14 @@ public class ITReplaceNorthPanel {
private int iconX, iconY, iconWidth, iconHeight; private int iconX, iconY, iconWidth, iconHeight;
private int inputLength; private int inputLength;
public static ArrayList<String> findItems = new ArrayList<>(); public static List<String> findItems = new ArrayList<>();
public static ArrayList<String> findInputItems = new ArrayList<>(); public static List<String> findSettingItems = new ArrayList<>();
public static ArrayList<String> replaceInputItems = new ArrayList<>(); public static List<String> findInputItems = new ArrayList<>();
public static List<String> replaceInputItems = new ArrayList<>();
public static List<String> formatItems = new ArrayList<>();
public static List<String> digitItems = new ArrayList<>();
public static List<String> groupItems = new ArrayList<>();
public static List<String> dsColumnItems = new ArrayList<>();
static { static {
findItems.add(Toolkit.i18nText("Fine-Design_Basic_Cell")); findItems.add(Toolkit.i18nText("Fine-Design_Basic_Cell"));
@ -86,17 +124,66 @@ public class ITReplaceNorthPanel {
findItems.add(Toolkit.i18nText("Fine-Design_Replace_Component")); findItems.add(Toolkit.i18nText("Fine-Design_Replace_Component"));
findItems.add(Toolkit.i18nText("Fine-Design_Basic_Widget")); findItems.add(Toolkit.i18nText("Fine-Design_Basic_Widget"));
findItems.add(Toolkit.i18nText("Fine-Design_Basic_Formula")); findItems.add(Toolkit.i18nText("Fine-Design_Basic_Formula"));
findSettingItems.add(SettingContent.CELL_FORMAT_NAME);
findSettingItems.add(SettingContent.CELL_DATA_SETTING_NAME);
findSettingItems.add(SettingContent.CELL_DS_COLUMN_NAME);
findSettingItems.add(SettingContent.DATASOURCE_CONNECTION_NAME);
findSettingItems.add(SettingContent.DATASOURCE_COLLECT_NAME);
formatItems.add(SettingContent.FORMAT_COMMON);
formatItems.add(SettingContent.FORMAT_NUMBER);
formatItems.add(SettingContent.FORMAT_MONEY);
formatItems.add(SettingContent.FORMAT_PERCENT);
formatItems.add(SettingContent.FORMAT_PERMILLAGE);
formatItems.add(SettingContent.FORMAT_SCIENCE);
formatItems.add(SettingContent.FORMAT_DATE);
formatItems.add(SettingContent.FORMAT_TIME);
formatItems.add(SettingContent.FORMAT_TEXT);
digitItems.add(SettingContent.DIGIT_SETTING_GROUP);
digitItems.add(SettingContent.DIGIT_SETTING_LIST);
digitItems.add(SettingContent.DIGIT_SETTING_SUM);
groupItems.add(SettingContent.GROUP_COMMON);
groupItems.add(SettingContent.GROUP_CONTINUUM);
dsColumnItems.add(SettingContent.CONNECTION_TEMPLATE);
} }
public ITReplaceNorthPanel() { public ITReplaceNorthPanel() {
upPanel = new JPanel(null); cardLayout = new CardLayout();
cardPanel = new JPanel(cardLayout);
upContentPanel = new JPanel(null);
upSettingPanel = new JPanel(null);
initContentPanel();
initSettingPanel();
cardPanel.add(contentScrollPane, CARD_CONTENT);
cardPanel.add(upSettingPanel, CARD_SETTING);
}
/**
* 限制尺寸
*
* @param width
*/
public void setLimitSize(int width) {
upContentPanel.setMaximumSize(new Dimension(limit_width, HEIGHT));
upContentPanel.setPreferredSize(new Dimension(limit_width, HEIGHT));
}
/**
* 初始化模板内容查找面板
*/
public void initContentPanel() {
findLabel = new UILabel(Toolkit.i18nText("Fine-Design_Replace_Search_Element")); findLabel = new UILabel(Toolkit.i18nText("Fine-Design_Replace_Search_Element"));
rangeLabel = new UILabel(Toolkit.i18nText("Fine-Design_Replace_Search_Range")); rangeLabel = new UILabel(Toolkit.i18nText("Fine-Design_Replace_Search_Range"));
iconLabel = new UILabel(CHANGE_ICON); iconLabel = new UILabel(CHANGE_ICON);
resultLabel = new UILabel(); resultLabel = new UILabel();
String[] rangeItems = new String[]{Toolkit.i18nText("Fine-Design_Basic_Export_JS_Template_Current")};
String[] replaceInputItems = new String[]{StringUtils.EMPTY}; String[] replaceInputItems = new String[]{StringUtils.EMPTY};
findCombobox = new UIComboBox(findItems.toArray()); findCombobox = new UIComboBox(findItems.toArray());
rangeCombobox = new UIComboBox(rangeItems); rangeCombobox = new UIComboBox(rangeItems);
@ -122,32 +209,198 @@ public class ITReplaceNorthPanel {
replaceButton = new UIButton(Toolkit.i18nText("Fine-Design_Replace_Button")); replaceButton = new UIButton(Toolkit.i18nText("Fine-Design_Replace_Button"));
searchButton = new UIButton(Toolkit.i18nText("Fine-Design_Search_Button")); searchButton = new UIButton(Toolkit.i18nText("Fine-Design_Search_Button"));
upPanel.setPreferredSize(new Dimension(limit_width, HEIGHT)); upContentPanel.setPreferredSize(new Dimension(limit_width, HEIGHT));
scrollPane = new UIScrollPane(upPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); contentScrollPane = new UIScrollPane(upContentPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
upPanel.add(findLabel); upContentPanel.add(findLabel);
upPanel.add(rangeLabel); upContentPanel.add(rangeLabel);
upPanel.add(resultLabel); upContentPanel.add(resultLabel);
upPanel.add(findCombobox); upContentPanel.add(findCombobox);
upPanel.add(rangeCombobox); upContentPanel.add(rangeCombobox);
upPanel.add(findInputCombobox); upContentPanel.add(findInputCombobox);
upPanel.add(replaceInputCombobox); upContentPanel.add(replaceInputCombobox);
upPanel.add(matchRadioButton); upContentPanel.add(matchRadioButton);
upPanel.add(replaceButton); upContentPanel.add(replaceButton);
upPanel.add(searchButton); upContentPanel.add(searchButton);
upPanel.add(iconLabel); upContentPanel.add(iconLabel);
scrollPane.setBorder(BorderFactory.createEmptyBorder()); contentScrollPane.setBorder(BorderFactory.createEmptyBorder());
} }
/** /**
* 限制尺寸 * 初始化设置项查找面板
*/
public void initSettingPanel() {
findSettingLabel = new UILabel(Toolkit.i18nText("Fine-Design_Replace_Search_Element"));
rangeSettingLabel = new UILabel(Toolkit.i18nText("Fine-Design_Replace_Search_Range"));
settingResultLabel = new UILabel();
findSettingComboBox = new UIComboBox(findSettingItems.toArray());
rangeSettingComboBox = new UIComboBox(rangeItems);
findSettingInputComboBox = new UIComboBox(formatItems.toArray()) {
@Override
public void setEditor(ComboBoxEditor anEditor) {
super.setEditor(new ITComboBoxEditor());
}
};
findSettingInputComboBox.setSelectedIndex(-1);
replaceSettingInputComboBox = new UIComboBox(formatItems.toArray()) {
@Override
public void setEditor(ComboBoxEditor anEditor) {
super.setEditor(new ITComboBoxEditor());
}
};
replaceSettingInputComboBox.setSelectedIndex(-1);
((UITextField) (findSettingInputComboBox.getEditor().getEditorComponent())).setPlaceholder(Toolkit.i18nText("Fine-Design_Replace_Choose_Search") + SettingContent.CELL_FORMAT_NAME);
findSettingInputComboBox.setEditable(true);
((UITextField) (findSettingInputComboBox.getEditor().getEditorComponent())).setEditable(false);
((UITextField) (replaceSettingInputComboBox.getEditor().getEditorComponent())).setPlaceholder(Toolkit.i18nText("Fine-Design_Replace_Choose_Replace") + SettingContent.CELL_FORMAT_NAME);
replaceSettingInputComboBox.setEditable(true);
((UITextField) (replaceSettingInputComboBox.getEditor().getEditorComponent())).setEditable(false);
iconSettingLabel = new UILabel(CHANGE_ICON);
findExtraSettingComboBox = new UIComboBox(groupItems.toArray());
findExtraSettingComboBox.setVisible(false);
replaceExtraSettingComboBox = new UIComboBox(groupItems.toArray());
replaceExtraSettingComboBox.setVisible(false);
searchSettingButton = new UIButton(Toolkit.i18nText("Fine-Design_Search_Button"));
replaceSettingButton = new UIButton(Toolkit.i18nText("Fine-Design_Replace_Button"));
replaceSettingButton.setEnabled(false);
upSettingPanel.add(findSettingLabel);
upSettingPanel.add(rangeSettingLabel);
upSettingPanel.add(findSettingComboBox);
upSettingPanel.add(rangeSettingComboBox);
upSettingPanel.add(findSettingInputComboBox);
upSettingPanel.add(replaceSettingInputComboBox);
upSettingPanel.add(iconSettingLabel);
upSettingPanel.add(findExtraSettingComboBox);
upSettingPanel.add(replaceExtraSettingComboBox);
upSettingPanel.add(searchSettingButton);
upSettingPanel.add(replaceSettingButton);
upSettingPanel.add(settingResultLabel);
settingScrollPane = new UIScrollPane(upSettingPanel, ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
settingScrollPane.setBorder(BorderFactory.createEmptyBorder());
initListener();
}
/**
* 初始化事件
*/
private void initListener() {
findSettingComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
replaceSettingInputComboBox.clearBoxItems();
findSettingInputComboBox.clearBoxItems();
String str = GeneralUtils.objectToString(findSettingComboBox.getSelectedItem());
((UITextField) findSettingInputComboBox.getEditor().getEditorComponent()).setText(StringUtils.EMPTY);
refreshSettingComboBox(SettingController.getSettingRefreshItems(str));
setDataSourceComboBoxStatus(isAllow2Replace());
replaceSettingButton.setEnabled(false);
}
});
findSettingInputComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
refreshExtraComboBox(findSettingInputComboBox, findExtraSettingComboBox);
}
});
replaceSettingInputComboBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
refreshExtraComboBox(replaceSettingInputComboBox, replaceExtraSettingComboBox);
}
});
}
/**
* 刷新替换按钮状态
*/
public void refreshSettingReplaceButtonStatus() {
replaceSettingButton.setEnabled(isAllChoose());
}
/**
* 是否各个选项都有选中内容
* *
* @param width * @return 是则返回true
*/ */
public void setLimitSize(int width) { public boolean isAllChoose() {
upPanel.setMaximumSize(new Dimension(limit_width, 161)); String str = GeneralUtils.objectToString(findSettingComboBox.getSelectedItem());
upPanel.setPreferredSize(new Dimension(limit_width, 161)); String findInputStr = GeneralUtils.objectToString(findSettingInputComboBox.getSelectedItem());
String replaceInputStr = GeneralUtils.objectToString(replaceSettingInputComboBox.getSelectedItem());
String findExtraStr = GeneralUtils.objectToString(findExtraSettingComboBox.getSelectedItem());
String replaceExtraStr = GeneralUtils.objectToString(replaceExtraSettingComboBox.getSelectedItem());
return (!StringUtils.equals(str, SettingContent.DATASOURCE_COLLECT_NAME) && !StringUtils.equals(str, SettingContent.DATASOURCE_CONNECTION_NAME))
&& StringUtils.isNotEmpty(findInputStr)
&& StringUtils.isNotEmpty(replaceInputStr)
&& StringUtils.isNotEmpty(findExtraStr)
&& StringUtils.isNotEmpty(replaceExtraStr);
} }
/**
* 是否支持替换
*
* @return 支持返回true
*/
public boolean isAllow2Replace() {
String str = GeneralUtils.objectToString(findSettingComboBox.getSelectedItem());
return !StringUtils.equals(str, SettingContent.DATASOURCE_CONNECTION_NAME) && !StringUtils.equals(str, SettingContent.DATASOURCE_COLLECT_NAME);
}
/**
* 设置数据集相关情况下的替换框的状态
*
* @param status
*/
public void setDataSourceComboBoxStatus(boolean status) {
replaceSettingButton.setEnabled(status);
replaceSettingInputComboBox.setEnabled(status);
replaceExtraSettingComboBox.setEnabled(status);
}
/**
* 刷新延展出的下拉框第三层
*
* @param settingComboBox
* @param extraComboBox
*/
public void refreshExtraComboBox(UIComboBox settingComboBox, UIComboBox extraComboBox) {
String str = GeneralUtils.objectToString(findSettingComboBox.getSelectedItem());
String parent = GeneralUtils.objectToString(settingComboBox.getSelectedItem());
if (StringUtils.isNotEmpty(parent) && SettingController.match(str) != null && SettingController.match(str).hasExpand(str, parent)) {
extraComboBox.clearBoxItems();
extraComboBox.setVisible(true);
extraComboBox.refreshBoxItems(SettingController.getSettingExtraRefreshItems(str, parent));
extraComboBox.setSelectedIndex(0);
} else {
extraComboBox.setVisible(false);
}
refreshSettingReplaceButtonStatus();
}
/**
* 刷新用户选择的输入框第二层
*
* @param list
*/
public void refreshSettingComboBox(List<String> list) {
findSettingInputComboBox.clearBoxItems();
findSettingInputComboBox.refreshBoxItems(list);
replaceSettingInputComboBox.clearBoxItems();
replaceSettingInputComboBox.refreshBoxItems(list);
replaceExtraSettingComboBox.setVisible(false);
findExtraSettingComboBox.setVisible(false);
}
/** /**
* 适配屏幕 * 适配屏幕
@ -162,7 +415,50 @@ public class ITReplaceNorthPanel {
templateWidth = templateWidth - ITReplaceWestPanel.LEFT_WIDTH; templateWidth = templateWidth - ITReplaceWestPanel.LEFT_WIDTH;
inputLength = (templateWidth - GAP * 5) / 2; inputLength = (templateWidth - GAP * 5) / 2;
fitContentScreen(templateWidth);
fitSettingScreen(templateWidth);
}
/**
* 适配屏幕
*
* @param templateWidth 当前设计器宽度
*/
private void fitSettingScreen(int templateWidth) {
findSettingLabel.setBounds(FIRST_X, FIRST_Y, LABEL_WIDTH, COMPONENT_HEIGHT);
findSettingComboBox.setBounds(SECOND_X, FIRST_Y, inputLength - 4 * GAP, COMPONENT_HEIGHT);
rangeSettingLabel.setBounds(replaceInputComboBoxX, FIRST_Y, LABEL_WIDTH, COMPONENT_HEIGHT);
rangeSettingComboBox.setBounds(rangeLabelX + rangeLabelWidth, FIRST_Y, inputLength - 3 * GAP, COMPONENT_HEIGHT);
findSettingInputComboBox.setBounds(FIRST_X, SECOND_Y, inputLength - GAP, COMPONENT_HEIGHT);
replaceSettingInputComboBox.setBounds(templateWidth - inputLength - GAP * 2, SECOND_Y, inputLength, COMPONENT_HEIGHT);
iconSettingLabel.setBounds(iconX, iconY, iconWidth, iconHeight);
searchSettingButton.setBounds(searchButtonX, searchButtonY, BUTTON_WIDTH, searchButtonHeight);
replaceSettingButton.setBounds(replaceButtonX, replaceButtonY, BUTTON_WIDTH, replaceButtonHeight);
settingResultLabel.setBounds(resultLabelX, resultLabelY, resultLabelWidth, resultLabelHeight);
setExtraBounds(templateWidth);
}
/**
* 设置额外的输入框
*
* @param templateWidth 当前设计器宽度
*/
private void setExtraBounds(int templateWidth) {
findExtraSettingComboBox.setBounds(FIRST_X, THIRD_Y, inputLength - GAP, COMPONENT_HEIGHT);
replaceExtraSettingComboBox.setBounds(templateWidth - inputLength - GAP * 2, THIRD_Y, inputLength, COMPONENT_HEIGHT);
}
/**
* 模板内容查找面板适配屏幕
*
* @param templateWidth 当前设计器宽度
*/
private void fitContentScreen(int templateWidth) {
setFindLabelBounds(); setFindLabelBounds();
setResultLabelBounds(templateWidth); setResultLabelBounds(templateWidth);
setFindComboboxBounds(); setFindComboboxBounds();
@ -174,7 +470,6 @@ public class ITReplaceNorthPanel {
setReplaceButtonBounds(); setReplaceButtonBounds();
setSearchButtonBounds(); setSearchButtonBounds();
setIconLabelBounds(); setIconLabelBounds();
} }
@ -221,12 +516,12 @@ public class ITReplaceNorthPanel {
} }
public UIScrollPane getScrollPane() { public UIScrollPane getContentScrollPane() {
return scrollPane; return contentScrollPane;
} }
public void setScrollPane(UIScrollPane scrollPane) { public void setContentScrollPane(UIScrollPane contentScrollPane) {
this.scrollPane = scrollPane; this.contentScrollPane = contentScrollPane;
} }
private void setIconLabelBounds() { private void setIconLabelBounds() {
@ -320,12 +615,12 @@ public class ITReplaceNorthPanel {
findLabel.setBounds(findLabelX, findLabelY, findLabelWidth, findLabelHeight); findLabel.setBounds(findLabelX, findLabelY, findLabelWidth, findLabelHeight);
} }
public JPanel getUpPanel() { public JPanel getUpContentPanel() {
return upPanel; return upContentPanel;
} }
public void setUpPanel(JPanel upPanel) { public void setUpContentPanel(JPanel upContentPanel) {
this.upPanel = upPanel; this.upContentPanel = upContentPanel;
} }
public UILabel getFindLabel() { public UILabel getFindLabel() {
@ -407,4 +702,77 @@ public class ITReplaceNorthPanel {
public void setSearchButton(UIButton searchButton) { public void setSearchButton(UIButton searchButton) {
this.searchButton = searchButton; this.searchButton = searchButton;
} }
public static CardLayout getCardLayout() {
return cardLayout;
}
public static JPanel getCardPanel() {
return cardPanel;
}
public UIButton getReplaceSettingButton() {
return replaceSettingButton;
}
public void setReplaceSettingButton(UIButton replaceSettingButton) {
this.replaceSettingButton = replaceSettingButton;
}
public UIButton getSearchSettingButton() {
return searchSettingButton;
}
public void setSearchSettingButton(UIButton searchSettingButton) {
this.searchSettingButton = searchSettingButton;
}
public UIComboBox getFindSettingInputComboBox() {
return findSettingInputComboBox;
}
public void setFindSettingInputComboBox(UIComboBox findSettingInputComboBox) {
this.findSettingInputComboBox = findSettingInputComboBox;
}
public UIComboBox getReplaceSettingInputComboBox() {
return replaceSettingInputComboBox;
}
public void setReplaceSettingInputComboBox(UIComboBox replaceSettingInputComboBox) {
this.replaceSettingInputComboBox = replaceSettingInputComboBox;
}
public UIComboBox getFindExtraSettingComboBox() {
return findExtraSettingComboBox;
}
public void setFindExtraSettingComboBox(UIComboBox findExtraSettingComboBox) {
this.findExtraSettingComboBox = findExtraSettingComboBox;
}
public UIComboBox getReplaceExtraSettingComboBox() {
return replaceExtraSettingComboBox;
}
public void setReplaceExtraSettingComboBox(UIComboBox replaceExtraSettingComboBox) {
this.replaceExtraSettingComboBox = replaceExtraSettingComboBox;
}
public UIComboBox getFindSettingComboBox() {
return findSettingComboBox;
}
public void setFindSettingComboBox(UIComboBox findSettingComboBox) {
this.findSettingComboBox = findSettingComboBox;
}
public UILabel getSettingResultLabel() {
return settingResultLabel;
}
public void setSettingResultLabel(UILabel settingResultLabel) {
this.settingResultLabel = settingResultLabel;
}
} }

6
designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceSouthPanel.java

@ -14,11 +14,11 @@ import java.awt.Color;
*/ */
public class ITReplaceSouthPanel { public class ITReplaceSouthPanel {
ITTableEditorPane tableEditorPane; ITTableEditorPane tableEditorPane;
ITTableEditor itTableEditor; public static ITTableEditor itTableEditor;
//勾选框索引 //勾选框索引
public static final int CHECKBOX_INDEX = 0; public static final int CHECKBOX_INDEX = 0;
//ITContent在表格的列索引 //ITContent在表格的列索引
public static final int CONTENT_INDEX = 6; public static final int CONTENT_INDEX = 7;
public static final int TABLE_GAP = 20; public static final int TABLE_GAP = 20;
public ITReplaceSouthPanel() { public ITReplaceSouthPanel() {
@ -47,7 +47,7 @@ public class ITReplaceSouthPanel {
this.tableEditorPane = tableEditorPane; this.tableEditorPane = tableEditorPane;
} }
public ITTableEditor getItTableEditor() { public static ITTableEditor getItTableEditor() {
return itTableEditor; return itTableEditor;
} }

62
designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITReplaceWestPanel.java

@ -1,6 +1,7 @@
package com.fr.design.actions.replace.ui; package com.fr.design.actions.replace.ui;
import com.fr.base.svg.IconUtils; import com.fr.base.svg.IconUtils;
import com.fr.design.actions.replace.info.Info;
import com.fr.design.gui.ibutton.UIToggleButton; import com.fr.design.gui.ibutton.UIToggleButton;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.i18n.Toolkit; import com.fr.design.i18n.Toolkit;
@ -19,6 +20,7 @@ import java.awt.GridLayout;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.util.List;
/** /**
* 左侧面板 * 左侧面板
@ -30,33 +32,59 @@ import java.awt.event.MouseEvent;
public class ITReplaceWestPanel { public class ITReplaceWestPanel {
private JPanel leftPanel; private JPanel leftPanel;
private UILabel iconLabel; private UILabel iconLabel;
private UIToggleButton contentButton;
private UIToggleButton settingButton;
private static final Icon HELP_ICON = IconUtils.readIcon("com/fr/design/images/buttonicon/replace_help.svg"); private static final Icon HELP_ICON = IconUtils.readIcon("com/fr/design/images/buttonicon/replace_help.svg");
private static final String HELP_URL = CloudCenter.getInstance().acquireUrlByKind("design.replace.help", "https://help.fanruan.com/finereport/doc-view-4954.html?source=3"); private static final String HELP_URL = CloudCenter.getInstance().acquireUrlByKind("design.replace.help", "https://help.fanruan.com/finereport/doc-view-4954.html?source=3");
private static final int FILL_COUNT = 12; private static final int FILL_COUNT = 11;
public static final int LEFT_WIDTH = 100; public static final int LEFT_WIDTH = 100;
public static final String CONTENT_TEXT = "<html><font color = 'rgb(255,255,255)'>" + Toolkit.i18nText("Fine-Design_Basic_Templates_Content") + "</font></html>"; public static final String CONTENT_TEXT = "<html><font color = 'rgb(255,255,255)'>" + Toolkit.i18nText("Fine-Design_Basic_Templates_Content") + "</font></html>";
public static final String SETTING_TEXT = "<html><font color = 'rgb(255,255,255)'>" + Toolkit.i18nText("Fine-Design_Replace_Setting") + "</font></html>";
public ITReplaceWestPanel() { public ITReplaceWestPanel() {
leftPanel = new JPanel(new GridLayout(15, 1, 0, 0)); leftPanel = new JPanel(new GridLayout(15, 1, 0, 0));
iconLabel = new UILabel("<html><u><font color = 'rgb(61,153,249)'>" + Toolkit.i18nText("Fine-Design_Report_Community_Help") + "</font></u></html>"); iconLabel = new UILabel("<html><u><font color = 'rgb(61,153,249)'>" + Toolkit.i18nText("Fine-Design_Report_Community_Help") + "</font></u></html>");
UIToggleButton contentButton = new UIToggleButton(Toolkit.i18nText("Fine-Design_Basic_Templates_Content")); contentButton = new UIToggleButton(Toolkit.i18nText("Fine-Design_Basic_Templates_Content"));
settingButton = new UIToggleButton(Toolkit.i18nText("Fine-Design_Replace_Setting"));
contentButton.setText(CONTENT_TEXT); contentButton.setText(CONTENT_TEXT);
contentButton.addActionListener(new ActionListener() { contentButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (!contentButton.isSelected()) { if (!contentButton.isSelected()) {
contentButton.setText(CONTENT_TEXT); showSelectPanel(ITReplaceNorthPanel.CARD_CONTENT, ITReplaceMainDialog.getSearchContentResultList());
} else { } else {
contentButton.setText(Toolkit.i18nText("Fine-Design_Basic_Templates_Content")); showSelectPanel(ITReplaceNorthPanel.CARD_SETTING, ITReplaceMainDialog.getSearchSettingResultList());
} }
changeColor4SelectContent();
settingButton.setSelected(contentButton.isSelected());
}
});
settingButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!settingButton.isSelected()) {
showSelectPanel(ITReplaceNorthPanel.CARD_SETTING, ITReplaceMainDialog.getSearchSettingResultList());
} else {
showSelectPanel(ITReplaceNorthPanel.CARD_CONTENT, ITReplaceMainDialog.getSearchContentResultList());
}
changeColor4SelectContent();
contentButton.setSelected(settingButton.isSelected());
} }
}); });
leftPanel.setBackground(Color.WHITE); leftPanel.setBackground(Color.WHITE);
//默认选中模板内容
contentButton.setSelected(true); contentButton.setSelected(true);
settingButton.setSelected(false);
//去除按钮的边框
contentButton.setBorderPainted(false); contentButton.setBorderPainted(false);
settingButton.setBorderPainted(false);
leftPanel.add(contentButton); leftPanel.add(contentButton);
leftPanel.add(settingButton);
leftPanel.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, new Color(218, 218, 221))); leftPanel.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, new Color(218, 218, 221)));
//填充一下面板 //填充一下面板
for (int i = 0; i < FILL_COUNT; i++) { for (int i = 0; i < FILL_COUNT; i++) {
@ -85,4 +113,30 @@ public class ITReplaceWestPanel {
public void setLeftPanel(JPanel leftPanel) { public void setLeftPanel(JPanel leftPanel) {
this.leftPanel = leftPanel; this.leftPanel = leftPanel;
} }
/**
* 切换面板时改变颜色
*/
public void changeColor4SelectContent() {
if (!contentButton.isSelected()) {
contentButton.setText(CONTENT_TEXT);
settingButton.setText(Toolkit.i18nText("Fine-Design_Replace_Setting"));
} else {
contentButton.setText(Toolkit.i18nText("Fine-Design_Basic_Templates_Content"));
settingButton.setText(SETTING_TEXT);
}
}
/**
* 展示指定的面板
*
* @param str card面板的标签
* @param list 对应的表格数据
*/
public void showSelectPanel(String str, List<? extends Info> list) {
ITReplaceNorthPanel.getCardLayout().show(ITReplaceNorthPanel.getCardPanel(), str);
ITReplaceSouthPanel.getItTableEditor().clear();
ITReplaceSouthPanel.getItTableEditor().add(list);
ITReplaceSouthPanel.getItTableEditor().fireTableDataChanged();
}
} }

7
designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableButton.java

@ -13,7 +13,6 @@ import com.fr.general.GeneralUtils;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.AbstractCellEditor; import javax.swing.AbstractCellEditor;
import javax.swing.JTable; import javax.swing.JTable;
import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellEditor;
@ -42,7 +41,7 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor
paraButton.addActionListener(new ActionListener() { paraButton.addActionListener(new ActionListener() {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
ITContent content = (ITContent) getEditTable().getValueAt(getEditTable().getEditingRow(), 6); ITContent content = (ITContent) getEditTable().getValueAt(getEditTable().getEditingRow(), ITReplaceSouthPanel.CONTENT_INDEX);
if (StringUtils.isNotEmpty(GeneralUtils.objectToString(content.getTrlString()))) { if (StringUtils.isNotEmpty(GeneralUtils.objectToString(content.getTrlString()))) {
ITReplaceMainDialog.setITReplaceFlag(true); ITReplaceMainDialog.setITReplaceFlag(true);
TRL trl = new TRL(GeneralUtils.objectToString(content.getTrlString())); TRL trl = new TRL(GeneralUtils.objectToString(content.getTrlString()));
@ -67,7 +66,7 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor
*/ */
@Override @Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
ITContent content = (ITContent) table.getValueAt(row, 6); ITContent content = (ITContent) table.getValueAt(row, ITReplaceSouthPanel.CONTENT_INDEX);
paraButton.setEnabled(content.isJumpAble()); paraButton.setEnabled(content.isJumpAble());
return paraButton; return paraButton;
} }
@ -85,7 +84,7 @@ public class ITTableButton extends AbstractCellEditor implements TableCellEditor
*/ */
@Override @Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
ITContent content = (ITContent) table.getValueAt(row, 6); ITContent content = (ITContent) table.getValueAt(row, ITReplaceSouthPanel.CONTENT_INDEX);
paraButton.setEnabled(content.isJumpAble()); paraButton.setEnabled(content.isJumpAble());
return paraButton; return paraButton;
} }

77
designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditor.java

@ -3,6 +3,7 @@ package com.fr.design.actions.replace.ui;
import com.fr.design.actions.replace.info.Info; import com.fr.design.actions.replace.info.Info;
import com.fr.design.actions.replace.info.base.ITContent; import com.fr.design.actions.replace.info.base.ITContent;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itableeditorpane.UITableEditAction; import com.fr.design.gui.itableeditorpane.UITableEditAction;
import com.fr.design.gui.itableeditorpane.UITableModelAdapter; import com.fr.design.gui.itableeditorpane.UITableModelAdapter;
@ -12,6 +13,14 @@ import com.fr.stable.StringUtils;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import javax.swing.BorderFactory;
import javax.swing.DefaultCellEditor;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.plaf.UIResource;
import javax.swing.table.TableCellRenderer;
import java.awt.Color;
import java.awt.Component;
import java.util.List; import java.util.List;
/** /**
@ -28,6 +37,7 @@ public class ITTableEditor extends UITableModelAdapter {
super(new String[]{ super(new String[]{
StringUtils.BLANK, StringUtils.BLANK,
Toolkit.i18nText("Fine-Design_Replace_Search_Content"), Toolkit.i18nText("Fine-Design_Replace_Search_Content"),
Toolkit.i18nText("Fine-Design_After_Replace"),
Toolkit.i18nText("Fine-Design_Replace_Template_Name"), Toolkit.i18nText("Fine-Design_Replace_Template_Name"),
Toolkit.i18nText("Fine-Design_Replace_Sheet_Name"), Toolkit.i18nText("Fine-Design_Replace_Sheet_Name"),
Toolkit.i18nText("Fine-Design_Replace_Block_Name"), Toolkit.i18nText("Fine-Design_Replace_Block_Name"),
@ -42,11 +52,14 @@ public class ITTableEditor extends UITableModelAdapter {
UILabel.class, UILabel.class,
UILabel.class, UILabel.class,
UILabel.class, UILabel.class,
UILabel.class,
ITTableButton.class, ITTableButton.class,
}); });
this.setDefaultEditor(ITTableButton.class, new ITTableButton()); this.setDefaultEditor(ITTableButton.class, new ITTableButton());
this.setDefaultRenderer(ITTableButton.class, new ITTableButton()); this.setDefaultRenderer(ITTableButton.class, new ITTableButton());
this.setDefaultEditor(Boolean.class, new ITBooleanEditor());
this.setDefaultRenderer(Boolean.class, new ITBooleanRenderer());
this.createTable().getColumnModel().getColumn(ITReplaceSouthPanel.CONTENT_INDEX).setMaxWidth(50); this.createTable().getColumnModel().getColumn(ITReplaceSouthPanel.CONTENT_INDEX).setMaxWidth(50);
this.createTable().getColumnModel().getColumn(ITReplaceSouthPanel.CHECKBOX_INDEX).setMaxWidth(50); this.createTable().getColumnModel().getColumn(ITReplaceSouthPanel.CHECKBOX_INDEX).setMaxWidth(50);
@ -106,6 +119,9 @@ public class ITTableEditor extends UITableModelAdapter {
fireTableDataChanged(); fireTableDataChanged();
} }
/**
* 选择的索引
*/
public enum ChooseIndex { public enum ChooseIndex {
/** /**
* 第一列返回选中情况 * 第一列返回选中情况
@ -127,9 +143,18 @@ public class ITTableEditor extends UITableModelAdapter {
} }
}, },
/** /**
* 第三列展示模板名 * 第三列展示替换后内容
*/ */
INDEX_2(2) { INDEX_2(2) {
@Override
public @Nullable Object returnContentObject(ITContent content) {
return content.getAfterReplaceStr();
}
},
/**
* 第四列展示模板名
*/
INDEX_3(3) {
@Override @Override
public Object returnContentObject(ITContent content) { public Object returnContentObject(ITContent content) {
return " " + content.getTemplateName(); return " " + content.getTemplateName();
@ -137,9 +162,9 @@ public class ITTableEditor extends UITableModelAdapter {
}, },
/** /**
* 展示Sheet * 展示Sheet
*/ */
INDEX_3(3) { INDEX_4(4) {
@Override @Override
public Object returnContentObject(ITContent content) { public Object returnContentObject(ITContent content) {
return " " + content.getSheetName(); return " " + content.getSheetName();
@ -147,18 +172,18 @@ public class ITTableEditor extends UITableModelAdapter {
}, },
/** /**
* 展示块名组件名 * 展示块名组件名
*/ */
INDEX_4(4) { INDEX_5(5) {
@Override @Override
public Object returnContentObject(ITContent content) { public Object returnContentObject(ITContent content) {
return " " + content.getBlockName(); return " " + content.getBlockName();
} }
}, },
/** /**
* 展示路径 * 展示路径
*/ */
INDEX_5(5) { INDEX_6(6) {
@Override @Override
public Object returnContentObject(ITContent content) { public Object returnContentObject(ITContent content) {
return " " + content.getOtherPos(); return " " + content.getOtherPos();
@ -166,9 +191,9 @@ public class ITTableEditor extends UITableModelAdapter {
}, },
/** /**
* 展示定位按钮 * 展示定位按钮
*/ */
INDEX_6(6) { INDEX_7(7) {
@Override @Override
public Object returnContentObject(ITContent content) { public Object returnContentObject(ITContent content) {
return content; return content;
@ -209,4 +234,38 @@ public class ITTableEditor extends UITableModelAdapter {
return null; return null;
} }
} }
/**
* 用于展示指定风格的checkbox的Editor
*/
public class ITBooleanEditor extends DefaultCellEditor {
public ITBooleanEditor() {
super(new UICheckBox());
UICheckBox checkBox = (UICheckBox) getComponent();
checkBox.setHorizontalAlignment(UICheckBox.CENTER);
}
}
/**
* 用于展示指定风格的checkbox的渲染器
*/
public class ITBooleanRenderer extends UICheckBox implements TableCellRenderer, UIResource {
public ITBooleanRenderer() {
super();
setHorizontalAlignment(JLabel.CENTER);
setBorderPainted(true);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
ITContent content = (ITContent) table.getValueAt(row, ITReplaceSouthPanel.CONTENT_INDEX);
setEnabled(!content.isReplaced());
setSelected((value != null && ((Boolean) value).booleanValue()));
setUI(getUICheckBoxUI());
setBorder(BorderFactory.createEmptyBorder());
setBackground(Color.WHITE);
return this;
}
}
} }

46
designer-realize/src/main/java/com/fr/design/actions/replace/ui/ITTableEditorPane.java

@ -5,6 +5,7 @@ import com.fr.design.border.UIRoundedBorder;
import com.fr.design.constants.UIConstants; import com.fr.design.constants.UIConstants;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.icheckbox.UICheckBox;
import com.fr.design.gui.icontainer.UIScrollPane; import com.fr.design.gui.icontainer.UIScrollPane;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itableeditorpane.UITableEditAction; import com.fr.design.gui.itableeditorpane.UITableEditAction;
@ -14,7 +15,6 @@ import com.fr.design.mainframe.share.ui.base.MouseClickListener;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import javax.swing.JCheckBox;
import javax.swing.JComponent; import javax.swing.JComponent;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JPanel; import javax.swing.JPanel;
@ -85,27 +85,30 @@ public class ITTableEditorPane<T> extends BasicPane {
/** /**
* 改变面板的各个状态替换按钮表头勾选框 * 改变面板的各个状态替换按钮表头勾选框
*
* @param content * @param content
* @param row * @param row
* @param col * @param col
*/ */
public void changeComponentStatus(ITContent content, int row, int col) { public void changeComponentStatus(ITContent content, int row, int col) {
if (content.isSelected()) { if (!content.isReplaced()) {
content.setSelected(false); if (content.isSelected()) {
editTable.setValueAt(content.isSelected(), row, col); content.setSelected(false);
ITReplaceMainDialog.selectCount--; editTable.setValueAt(content.isSelected(), row, col);
//如果没有选中,替换按钮需要置灰 ITReplaceMainDialog.selectCount--;
ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(ITReplaceMainDialog.selectCount > 0); //如果没有选中,替换按钮需要置灰
} else { ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(ITReplaceMainDialog.selectCount > 0);
content.setSelected(true); } else {
editTable.setValueAt(content.isSelected(), row, col); content.setSelected(true);
ITReplaceMainDialog.selectCount++; editTable.setValueAt(content.isSelected(), row, col);
ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(true); ITReplaceMainDialog.selectCount++;
} ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(true);
//更新表头的勾选框状态 }
if (editTable.getTableHeader().getDefaultRenderer() instanceof ITHeaderRenderer) { //更新表头的勾选框状态
ITHeaderRenderer renderer = (ITHeaderRenderer) editTable.getTableHeader().getDefaultRenderer(); if (editTable.getTableHeader().getDefaultRenderer() instanceof ITHeaderRenderer) {
renderer.refreshHeader(editTable, ITReplaceMainDialog.selectCount >= editTable.getRowCount()); ITHeaderRenderer renderer = (ITHeaderRenderer) editTable.getTableHeader().getDefaultRenderer();
renderer.refreshHeader(editTable, ITReplaceMainDialog.selectCount >= editTable.getRowCount());
}
} }
} }
@ -125,11 +128,11 @@ public class ITTableEditorPane<T> extends BasicPane {
*/ */
public static class ITHeaderRenderer implements TableCellRenderer { public static class ITHeaderRenderer implements TableCellRenderer {
JTableHeader tableHeader; JTableHeader tableHeader;
final JCheckBox selectBox; final UICheckBox selectBox;
public ITHeaderRenderer(JTable table) { public ITHeaderRenderer(JTable table) {
this.tableHeader = table.getTableHeader(); this.tableHeader = table.getTableHeader();
selectBox = new JCheckBox(); selectBox = new UICheckBox();
selectBox.setSelected(true); selectBox.setSelected(true);
tableHeader.addMouseListener(new MouseAdapter() { tableHeader.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
@ -217,7 +220,10 @@ public class ITTableEditorPane<T> extends BasicPane {
ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(value); ITReplaceMainDialog.getInstance().getNorthPane().getReplaceButton().setEnabled(value);
} }
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
((ITContent) (getEditTable().getValueAt(i, ITReplaceSouthPanel.CONTENT_INDEX))).setSelected(value); ITContent content = ((ITContent) (getEditTable().getValueAt(i, ITReplaceSouthPanel.CONTENT_INDEX)));
if (!content.isReplaced()) {
content.setSelected(value);
}
} }
} }

Loading…
Cancel
Save