Browse Source

加一个数据集面板处理器的接口,和jcontrolpane分开

master
zack 9 years ago
parent
commit
7c80cb51a2
  1. 9
      designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java
  2. 62
      designer_base/src/com/fr/design/data/datapane/TableDataPaneController.java
  3. 17
      designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java
  4. 14
      designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java
  5. 4
      designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java
  6. 172
      designer_base/src/com/fr/design/gui/controlpane/JControlPane.java
  7. 82
      designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java

9
designer_base/src/com/fr/design/data/datapane/ReportTableDataPane.java

@ -6,7 +6,6 @@ package com.fr.design.data.datapane;
import com.fr.data.TableDataSource;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.fun.TableDataPaneProcessor;
import com.fr.design.gui.controlpane.JControlPane;
import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.design.gui.frpane.LoadingBasicPane;
import com.fr.design.layout.FRGUIPaneFactory;
@ -22,24 +21,24 @@ import java.util.Map;
* 创建于2011-6-14
*/
public class ReportTableDataPane extends LoadingBasicPane {
private JControlPane tdPane;
private TableDataPaneController tdPane;
@Override
protected void initComponents(JPanel container) {
container.setLayout(FRGUIPaneFactory.createBorderLayout());
TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor();
JControlPane pane = null;
TableDataPaneController pane = null;
if (paneProcessor != null) {
pane = paneProcessor.createServerTableDataPane();
}
tdPane = pane == null ? new TableDataListPane() {
tdPane = pane == null ? new TableDataPaneListPane() {
@Override
public NameableCreator[] createNameableCreators() {
return TableDataCreatorProducer.getInstance().createReportTableDataCreator();
}
} : pane;
container.add(tdPane, BorderLayout.CENTER);
container.add(tdPane.getPanel(), BorderLayout.CENTER);
}
@Override

62
designer_base/src/com/fr/design/data/datapane/TableDataPaneController.java

@ -0,0 +1,62 @@
package com.fr.design.data.datapane;
import com.fr.data.TableDataSource;
import com.fr.file.DatasourceManagerProvider;
import javax.swing.*;
import java.util.Map;
/**
* Coder: zack
* Date: 2016/5/18
* Time: 10:13
*/
public interface TableDataPaneController {
/**
* 获取数据集名字变更集合
*
* @return
*/
Map<String, String> getDsNameChangedMap();
/**
* 数据集重命名
*
* @param oldName
* @param newName
*/
void rename(String oldName, String newName);
/**
* 是否合法
* @throws Exception
*/
void checkValid() throws Exception;
/**
* 名字是否允许
* @return
*/
boolean isNamePermitted();
void populate(DatasourceManagerProvider datasourceManagerProvider);
void update(DatasourceManagerProvider datasourceManagerProvider);
void populate(TableDataSource datasourceManagerProvider);
void update(TableDataSource datasourceManagerProvider);
/**
* 设置选中项
* @param index
*/
void setSelectedIndex(int index);
/**
* 返回当前数据集面板
* @return
*/
JPanel getPanel();
}

17
designer_base/src/com/fr/design/data/datapane/TableDataListPane.java → designer_base/src/com/fr/design/data/datapane/TableDataPaneListPane.java

@ -21,10 +21,11 @@ import java.util.*;
/**
* TableDataList Pane.
*/
public class TableDataListPane extends JListControlPane {
public class TableDataPaneListPane extends JListControlPane implements TableDataPaneController {
private boolean isNamePermitted = true;
private Map<String, String> dsNameChangedMap = new HashMap<String, String>();
public TableDataListPane() {
public TableDataPaneListPane() {
super();
dsNameChangedMap.clear();
this.addEditingListner(new PropertyChangeAdapter() {
@ -42,7 +43,7 @@ public class TableDataListPane extends JListControlPane {
String[] sign = new String[]{",", "!"};
isNamePermitted = false;
nameableList.stopEditing();
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataListPane.this), Inter.getLocText(warning, sign));
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataPaneListPane.this), Inter.getLocText(warning, sign));
setWarnigText(editingIndex);
return;
}
@ -53,14 +54,14 @@ public class TableDataListPane extends JListControlPane {
String[] sign = new String[]{"", tempName + ",", "!"};
isNamePermitted = false;
nameableList.stopEditing();
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataListPane.this), Inter.getLocText(waning, sign));
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataPaneListPane.this), Inter.getLocText(waning, sign));
setWarnigText(editingIndex);
} else if (editingType instanceof StoreProcedure && isIncludeUnderline(tempName)) {
String[] datasource_underline = new String[]{"Datasource-Stored_Procedure", "Name", "can_not_include_underline"};
String[] sign = new String[]{"", "", "!"};
isNamePermitted = false;
nameableList.stopEditing();
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataListPane.this), Inter.getLocText(datasource_underline, sign));
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataPaneListPane.this), Inter.getLocText(datasource_underline, sign));
setWarnigText(editingIndex);
}
if (nameableList.getSelectedValue() instanceof ListModelElement) {
@ -74,7 +75,7 @@ public class TableDataListPane extends JListControlPane {
});
}
protected void rename(String oldName, String newName) {
public void rename(String oldName, String newName) {
dsNameChangedMap.put(oldName, newName);
}
@ -257,4 +258,8 @@ public class TableDataListPane extends JListControlPane {
public Map<String, String> getDsNameChangedMap() {
return this.dsNameChangedMap;
}
public JPanel getPanel() {
return this;
}
}

14
designer_base/src/com/fr/design/data/tabledata/tabledatapane/TableDataManagerPane.java

@ -2,9 +2,9 @@ package com.fr.design.data.tabledata.tabledatapane;
import com.fr.base.FRContext;
import com.fr.design.ExtraDesignClassManager;
import com.fr.design.data.datapane.TableDataListPane;
import com.fr.design.data.datapane.TableDataPaneController;
import com.fr.design.data.datapane.TableDataPaneListPane;
import com.fr.design.fun.TableDataPaneProcessor;
import com.fr.design.gui.controlpane.JControlPane;
import com.fr.design.gui.frpane.LoadingBasicPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itextfield.UITextField;
@ -21,7 +21,7 @@ import java.util.Map;
public class TableDataManagerPane extends LoadingBasicPane {
private UITextField tableDataTextField;
private JControlPane tableDataPane;
private TableDataPaneController tableDataPane;
@Override
protected void initComponents(JPanel container) {
@ -40,17 +40,17 @@ public class TableDataManagerPane extends LoadingBasicPane {
tableDataPathPane.add(tableDataTextField, BorderLayout.CENTER);
this.tableDataTextField.setEditable(false);
TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor();
JControlPane pane = null;
TableDataPaneController pane = null;
if (paneProcessor != null) {
pane = paneProcessor.createServerTableDataPane();
}
tableDataPane = pane == null ? new TableDataListPane() {
protected void rename(String oldName, String newName) {
tableDataPane = pane == null ? new TableDataPaneListPane() {
public void rename(String oldName, String newName) {
super.rename(oldName, newName);
renameConnection(oldName, newName);
}
} : pane;
container.add(tableDataPane, BorderLayout.CENTER);
container.add(tableDataPane.getPanel(), BorderLayout.CENTER);
}

4
designer_base/src/com/fr/design/fun/TableDataPaneProcessor.java

@ -2,7 +2,7 @@ package com.fr.design.fun;
import com.fr.design.DesignModelAdapter;
import com.fr.design.data.BasicTableDataTreePane;
import com.fr.design.gui.controlpane.JControlPane;
import com.fr.design.data.datapane.TableDataPaneController;
import com.fr.stable.fun.Level;
/**
@ -25,6 +25,6 @@ public interface TableDataPaneProcessor extends Level {
* 服务器数据集面板(模板数据集面板)
* @return 服务器数据集面板
*/
JControlPane createServerTableDataPane();
TableDataPaneController createServerTableDataPane();
}

172
designer_base/src/com/fr/design/gui/controlpane/JControlPane.java

@ -1,20 +1,16 @@
package com.fr.design.gui.controlpane;
import com.fr.data.TableDataSource;
import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itoolbar.UIToolbar;
import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.menu.ToolBarDef;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.file.DatasourceManagerProvider;
import com.fr.stable.ArrayUtils;
import com.fr.stable.Nameable;
import javax.swing.*;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;
/**
* Coder: zack
@ -24,12 +20,12 @@ import java.util.Map;
public abstract class JControlPane extends BasicPane implements UnrepeatedNameHelper {
protected static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30
protected JPanel controlUpdatePane;
protected Map<String, String> dsNameChangedMap = new HashMap<String, String>();
protected ShortCut4JControlPane[] shorts;
protected NameableCreator[] creators;
protected ToolBarDef toolbarDef;
protected UIToolbar toolBar;
private ShortCut4JControlPane[] shorts;
private NameableCreator[] creators;
private ToolBarDef toolbarDef;
private UIToolbar toolBar;
// peter:这是整体的一个cardLayout Pane
protected CardLayout cardLayout;
@ -46,6 +42,50 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
*/
public abstract NameableCreator[] createNameableCreators();
public ShortCut4JControlPane[] getShorts() {
return shorts;
}
public void setShorts(ShortCut4JControlPane[] shorts) {
this.shorts = shorts;
}
public void setCreators(NameableCreator[] creators) {
this.creators = creators;
}
public ToolBarDef getToolbarDef() {
return toolbarDef;
}
public void setToolbarDef(ToolBarDef toolbarDef) {
this.toolbarDef = toolbarDef;
}
public UIToolbar getToolBar() {
return toolBar;
}
public void setToolBar(UIToolbar toolBar) {
this.toolBar = toolBar;
}
public CardLayout getCardLayout() {
return cardLayout;
}
public void setCardLayout(CardLayout cardLayout) {
this.cardLayout = cardLayout;
}
public JPanel getCardPane() {
return cardPane;
}
public void setCardPane(JPanel cardPane) {
this.cardPane = cardPane;
}
protected void initComponentPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.creators = this.createNameableCreators();
@ -75,7 +115,7 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
// LeftPane
JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
init(leftPane);
initLeftPane(leftPane);
shorts = this.createShortcuts();
if (ArrayUtils.isEmpty(shorts)) {
@ -92,59 +132,10 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
return leftPane;
}
public ShortCut4JControlPane[] getShorts() {
return shorts;
}
public void setShorts(ShortCut4JControlPane[] shorts) {
this.shorts = shorts;
}
public NameableCreator[] getCreators() {
return creators;
}
public void setCreators(NameableCreator[] creators) {
this.creators = creators;
}
public ToolBarDef getToolbarDef() {
return toolbarDef;
}
public void setToolbarDef(ToolBarDef toolbarDef) {
this.toolbarDef = toolbarDef;
}
public UIToolbar getToolBar() {
return toolBar;
}
public void setToolBar(UIToolbar toolBar) {
this.toolBar = toolBar;
}
public CardLayout getCardLayout() {
return cardLayout;
}
public void setCardLayout(CardLayout cardLayout) {
this.cardLayout = cardLayout;
}
public JPanel getCardPane() {
return cardPane;
}
public void setCardPane(JPanel cardPane) {
this.cardPane = cardPane;
}
/**
* 初始化
* 初始化左边面板
*/
protected void init(JPanel leftPane) {
protected void initLeftPane(JPanel leftPane) {
}
@ -152,13 +143,6 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
return shorts.length * SHORT_WIDTH;
}
public Map<String, String> getDsNameChangedMap() {
return dsNameChangedMap;
}
public void setDsNameChangedMap(Map<String, String> dsNameChangedMap) {
this.dsNameChangedMap = dsNameChangedMap;
}
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
@ -183,36 +167,12 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
protected abstract ShortCut4JControlPane sortItemShortCut();
public void setNameListEditable(boolean editable) {
}
public abstract Nameable[] update();
public void populate(Nameable[] nameableArray) {
}
public void update(DatasourceManagerProvider datasourceManager) {
}
public void populate(DatasourceManagerProvider datasourceManager) {
}
public void populate(TableDataSource tds) {
}
public void update(TableDataSource tds) {
}
/**
* 名字是否允许
*
* @return 默认返回true
*/
public boolean isNamePermitted() {
return true;
}
/**
* 检查按钮可用状态 Check button enabled.
*/
@ -220,37 +180,33 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
}
protected void doBeforeRemove() {
}
protected void doAfterRemove() {
}
public NameableCreator[] creators() {
return creators == null ? new NameableCreator[0] : creators;
}
/**
* 检查是否符合规范
*
* @throws Exception
*/
public void checkValid() throws Exception {
}
protected abstract boolean hasInvalid(boolean isAdd);
/**
* 设置选中项
* 刷新 NameableCreator
*
* @param index 选中项的序列号
* @param creators 生成器
*/
public void setSelectedIndex(int index) {
public void refreshNameableCreator(NameableCreator[] creators) {
this.creators = creators;
shorts = this.createShortcuts();
toolbarDef.clearShortCuts();
for (ShortCut4JControlPane sj : shorts) {
toolbarDef.addShortCut(sj.getShortCut());
}
protected void rename(String oldName, String newName) {
dsNameChangedMap.put(oldName, newName);
toolbarDef.updateToolBar(toolBar);
toolBar.validate();
toolBar.repaint();
this.repaint();
}
}

82
designer_base/src/com/fr/design/gui/controlpane/JListControlPane.java

@ -63,29 +63,7 @@ public abstract class JListControlPane extends JControlPane {
public abstract NameableCreator[] createNameableCreators();
protected JPanel getLeftPane() {
// LeftPane
JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
initNameList(leftPane);
shorts = this.createShortcuts();
if (ArrayUtils.isEmpty(shorts)) {
return leftPane;
}
toolbarDef = new ToolBarDef();
for (ShortCut4JControlPane sj : shorts) {
toolbarDef.addShortCut(sj.getShortCut());
}
toolBar = ToolBarDef.createJToolBar();
toolbarDef.updateToolBar(toolBar);
leftPane.add(toolBar, BorderLayout.NORTH);
return leftPane;
}
private void initNameList(JPanel leftPane) {
protected void initLeftPane(JPanel leftPane) {
nameableList = createJNameList();
nameableList.setName(LIST_NAME);
leftPane.add(new UIScrollPane(nameableList), BorderLayout.CENTER);
@ -127,23 +105,9 @@ public abstract class JListControlPane extends JControlPane {
}
protected int getLeftPreferredSize() {
return shorts.length * JControlPane.SHORT_WIDTH;
}
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
addItemShortCut(),
removeItemShortCut(),
copyItemShortCut(),
moveUpItemShortCut(),
moveDownItemShortCut(),
sortItemShortCut()
};
}
protected ShortCut4JControlPane addItemShortCut() {
ShortCut addItemShortCut;
NameableCreator[] creators = creators();
if (creators.length == 1) {
addItemShortCut = new AddItemUpdateAction(creators);
} else {
@ -264,25 +228,6 @@ public abstract class JListControlPane extends JControlPane {
return el == null ? null : el.wrapper.getName();
}
/**
* 刷新 NameableCreator
*
* @param creators 生成器
*/
public void refreshNameableCreator(NameableCreator[] creators) {
this.creators = creators;
shorts = this.createShortcuts();
toolbarDef.clearShortCuts();
for (ShortCut4JControlPane sj : shorts) {
toolbarDef.addShortCut(sj.getShortCut());
}
toolbarDef.updateToolBar(toolBar);
toolBar.validate();
toolBar.repaint();
this.repaint();
}
protected boolean isNameRepeted(java.util.List[] list, String name) {
for (int i = 0; i < list.length; i++) {
if (list[i].contains(name)) {
@ -676,7 +621,7 @@ public abstract class JListControlPane extends JControlPane {
// p:右键菜单.
JPopupMenu popupMenu = new JPopupMenu();
for (ShortCut4JControlPane sj : shorts) {
for (ShortCut4JControlPane sj : getShorts()) {
sj.getShortCut().intoJPopupMenu(popupMenu);
}
@ -694,13 +639,14 @@ public abstract class JListControlPane extends JControlPane {
* 检查按钮可用状态 Check button enabled.
*/
public void checkButtonEnabled() {
int selectedIndex = nameableList.getSelectedIndex();
if (selectedIndex == -1) {
this.cardLayout.show(cardPane, "SELECT");
} else {
this.cardLayout.show(cardPane, "EDIT");
}
for (ShortCut4JControlPane sj : this.shorts) {
for (ShortCut4JControlPane sj : getShorts()) {
sj.checkEnable();
}
}
@ -713,10 +659,6 @@ public abstract class JListControlPane extends JControlPane {
}
public NameableCreator[] creators() {
return creators == null ? new NameableCreator[0] : creators;
}
/*
* Nameable的ListCellRenerer
*/
@ -732,7 +674,7 @@ public abstract class JListControlPane extends JControlPane {
this.setText(((ListModelElement) value).wrapper.getName());
boolean iconSet = false;
for (NameableCreator creator : JListControlPane.this.creators) {
for (NameableCreator creator : JListControlPane.this.creators()) {
if (creator.menuIcon() != null && creator.acceptObject2Populate(wrappee) != null) {
this.setIcon(creator.menuIcon());
this.setToolTipText(creator.createTooltip());
@ -836,6 +778,7 @@ public abstract class JListControlPane extends JControlPane {
}
private void initUpdatePane() {
NameableCreator[] creators = creators();
if (creators == null) {
return;
}
@ -855,6 +798,7 @@ public abstract class JListControlPane extends JControlPane {
}
elEditing = el;
NameableCreator[] creators = creators();
for (int i = 0, len = updatePanes.length; i < len; i++) {
Object ob2Populate = creators[i].acceptObject2Populate(el.wrapper);
@ -884,13 +828,14 @@ public abstract class JListControlPane extends JControlPane {
}
public void update() {
NameableCreator[] creators = creators();
for (int i = 0; i < updatePanes.length; i++) {
BasicBeanPane pane = updatePanes[i];
if (pane != null && pane.isVisible()) {
Object bean = pane.updateBean();
if (i < JListControlPane.this.creators.length) {
JListControlPane.this.creators[i].saveUpdatedBean(elEditing, bean);
if (i < creators.length) {
creators[i].saveUpdatedBean(elEditing, bean);
}
}
}
@ -937,8 +882,9 @@ public abstract class JListControlPane extends JControlPane {
// 选项添加个数有限制等情况下 要求能控制快捷按钮的状态
protected void setToolbarDefEnable(int shortCutIndex, int itemIndex, boolean enabled) {
if (this.toolbarDef.getShortCutCount() > shortCutIndex) {
ShortCut sc = this.toolbarDef.getShortCut(shortCutIndex);
ToolBarDef toolbarDef = getToolbarDef();
if (toolbarDef.getShortCutCount() > shortCutIndex) {
ShortCut sc = toolbarDef.getShortCut(shortCutIndex);
if (sc instanceof AddItemMenuDef) {
AddItemMenuDef am = (AddItemMenuDef) sc;
if (am.getShortCutCount() > itemIndex) {

Loading…
Cancel
Save