Browse Source

Merge branch 'dev' of ssh://www.finedevelop.com:7999/~richie/design into dev

master
richie 8 years ago
parent
commit
ac47735546
  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. 544
      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. 174
      designer_base/src/com/fr/design/gui/controlpane/JControlPane.java
  7. 129
      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.data.TableDataSource;
import com.fr.design.ExtraDesignClassManager; import com.fr.design.ExtraDesignClassManager;
import com.fr.design.fun.TableDataPaneProcessor; 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.controlpane.NameableCreator;
import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.gui.frpane.LoadingBasicPane;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
@ -22,24 +21,24 @@ import java.util.Map;
* 创建于2011-6-14 * 创建于2011-6-14
*/ */
public class ReportTableDataPane extends LoadingBasicPane { public class ReportTableDataPane extends LoadingBasicPane {
private JControlPane tdPane; private TableDataPaneController tdPane;
@Override @Override
protected void initComponents(JPanel container) { protected void initComponents(JPanel container) {
container.setLayout(FRGUIPaneFactory.createBorderLayout()); container.setLayout(FRGUIPaneFactory.createBorderLayout());
TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor();
JControlPane pane = null; TableDataPaneController pane = null;
if (paneProcessor != null) { if (paneProcessor != null) {
pane = paneProcessor.createServerTableDataPane(); pane = paneProcessor.createServerTableDataPane();
} }
tdPane = pane == null ? new TableDataListPane() { tdPane = pane == null ? new TableDataPaneListPane() {
@Override @Override
public NameableCreator[] createNameableCreators() { public NameableCreator[] createNameableCreators() {
return TableDataCreatorProducer.getInstance().createReportTableDataCreator(); return TableDataCreatorProducer.getInstance().createReportTableDataCreator();
} }
} : pane; } : pane;
container.add(tdPane, BorderLayout.CENTER); container.add(tdPane.getPanel(), BorderLayout.CENTER);
} }
@Override @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();
}

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

@ -1,260 +1,286 @@
package com.fr.design.data.datapane; package com.fr.design.data.datapane;
import com.fr.base.TableData; import com.fr.base.TableData;
import com.fr.data.TableDataSource; import com.fr.data.TableDataSource;
import com.fr.data.impl.storeproc.StoreProcedure; import com.fr.data.impl.storeproc.StoreProcedure;
import com.fr.design.data.DesignTableDataManager; import com.fr.design.data.DesignTableDataManager;
import com.fr.design.gui.controlpane.JListControlPane; import com.fr.design.gui.controlpane.JListControlPane;
import com.fr.design.gui.controlpane.NameableCreator; import com.fr.design.gui.controlpane.NameableCreator;
import com.fr.design.gui.ilist.ListModelElement; import com.fr.design.gui.ilist.ListModelElement;
import com.fr.file.DatasourceManagerProvider; import com.fr.file.DatasourceManagerProvider;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.Inter; import com.fr.general.Inter;
import com.fr.general.NameObject; import com.fr.general.NameObject;
import com.fr.stable.Nameable; import com.fr.stable.Nameable;
import com.fr.stable.StringUtils; import com.fr.stable.StringUtils;
import com.fr.stable.core.PropertyChangeAdapter; import com.fr.stable.core.PropertyChangeAdapter;
import javax.swing.*; import javax.swing.*;
import java.util.*; import java.util.*;
/** /**
* TableDataList Pane. * TableDataList Pane.
*/ */
public class TableDataListPane extends JListControlPane { public class TableDataPaneListPane extends JListControlPane implements TableDataPaneController {
private boolean isNamePermitted = true; private boolean isNamePermitted = true;
private Map<String, String> dsNameChangedMap = new HashMap<String, String>();
public TableDataListPane() {
super(); public TableDataPaneListPane() {
dsNameChangedMap.clear(); super();
this.addEditingListner(new PropertyChangeAdapter() { dsNameChangedMap.clear();
@Override this.addEditingListner(new PropertyChangeAdapter() {
public void propertyChange() { @Override
isNamePermitted = true; public void propertyChange() {
TableDataSource source = DesignTableDataManager.getEditingTableDataSource(); isNamePermitted = true;
String[] allDSNames = DesignTableDataManager.getAllDSNames(source); TableDataSource source = DesignTableDataManager.getEditingTableDataSource();
String[] allListNames = nameableList.getAllNames(); String[] allDSNames = DesignTableDataManager.getAllDSNames(source);
allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY; String[] allListNames = nameableList.getAllNames();
String tempName = getEditingName(); allListNames[nameableList.getSelectedIndex()] = StringUtils.EMPTY;
Object editingType = getEditingType(); String tempName = getEditingName();
if (StringUtils.isEmpty(tempName)) { Object editingType = getEditingType();
String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"}; if (StringUtils.isEmpty(tempName)) {
String[] sign = new String[]{",", "!"}; String[] warning = new String[]{"NOT_NULL_Des", "Please_Rename"};
isNamePermitted = false; String[] sign = new String[]{",", "!"};
nameableList.stopEditing(); isNamePermitted = false;
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataListPane.this), Inter.getLocText(warning, sign)); nameableList.stopEditing();
setWarnigText(editingIndex); JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataPaneListPane.this), Inter.getLocText(warning, sign));
return; setWarnigText(editingIndex);
} return;
}
if (!ComparatorUtils.equals(tempName, selectedName)
&& isNameRepeted(new List[]{Arrays.asList(allDSNames), Arrays.asList(allListNames)}, tempName)) { if (!ComparatorUtils.equals(tempName, selectedName)
String[] waning = new String[]{"already_exists", "TableData", "Please_Rename"}; && isNameRepeted(new List[]{Arrays.asList(allDSNames), Arrays.asList(allListNames)}, tempName)) {
String[] sign = new String[]{"", tempName + ",", "!"}; String[] waning = new String[]{"already_exists", "TableData", "Please_Rename"};
isNamePermitted = false; String[] sign = new String[]{"", tempName + ",", "!"};
nameableList.stopEditing(); isNamePermitted = false;
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataListPane.this), Inter.getLocText(waning, sign)); nameableList.stopEditing();
setWarnigText(editingIndex); JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataPaneListPane.this), Inter.getLocText(waning, sign));
} else if (editingType instanceof StoreProcedure && isIncludeUnderline(tempName)) { setWarnigText(editingIndex);
String[] datasource_underline = new String[]{"Datasource-Stored_Procedure", "Name", "can_not_include_underline"}; } else if (editingType instanceof StoreProcedure && isIncludeUnderline(tempName)) {
String[] sign = new String[]{"", "", "!"}; String[] datasource_underline = new String[]{"Datasource-Stored_Procedure", "Name", "can_not_include_underline"};
isNamePermitted = false; String[] sign = new String[]{"", "", "!"};
nameableList.stopEditing(); isNamePermitted = false;
JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataListPane.this), Inter.getLocText(datasource_underline, sign)); nameableList.stopEditing();
setWarnigText(editingIndex); JOptionPane.showMessageDialog(SwingUtilities.getWindowAncestor(TableDataPaneListPane.this), Inter.getLocText(datasource_underline, sign));
} setWarnigText(editingIndex);
if (nameableList.getSelectedValue() instanceof ListModelElement) { }
Nameable selected = ((ListModelElement) nameableList.getSelectedValue()).wrapper; if (nameableList.getSelectedValue() instanceof ListModelElement) {
if (!ComparatorUtils.equals(tempName, selected.getName())) { Nameable selected = ((ListModelElement) nameableList.getSelectedValue()).wrapper;
rename(selected.getName(), tempName); if (!ComparatorUtils.equals(tempName, selected.getName())) {
rename(selected.getName(), tempName);
}
} }
} }
}); }
} });
}
protected void rename(String oldName, String newName) {
dsNameChangedMap.put(oldName, newName); @Override
} public void rename(String oldName, String newName) {
dsNameChangedMap.put(oldName, newName);
/** }
* 名字是否允许
* /**
* @return / * 名字是否允许
*/ *
public boolean isNamePermitted() { * @return /
return isNamePermitted; */
} @Override
public boolean isNamePermitted() {
return isNamePermitted;
/** }
* 检查按钮可用状态 Check button enabled.
*/
public void checkButtonEnabled() { /**
super.checkButtonEnabled(); * 检查按钮可用状态 Check button enabled.
isNamePermitted = !isContainsRename(); */
} @Override
public void checkButtonEnabled() {
private boolean isIncludeUnderline(String name) { super.checkButtonEnabled();
return ComparatorUtils.equals(name.indexOf(StoreProcedure.SPLIT), -1) ? false : true; isNamePermitted = !isContainsRename();
} }
/** private boolean isIncludeUnderline(String name) {
* 创建服务器数据集所需要的NameableCreator数组 return ComparatorUtils.equals(name.indexOf(StoreProcedure.SPLIT), -1) ? false : true;
* }
* @return 数组
*/ /**
public NameableCreator[] createNameableCreators() { * 创建服务器数据集所需要的NameableCreator数组
return TableDataCreatorProducer.getInstance().createServerTableDataCreator(); *
} * @return 数组
*/
@Override
// 只能保证当前模板不重名了 public NameableCreator[] createNameableCreators() {
return TableDataCreatorProducer.getInstance().createServerTableDataCreator();
/** }
* 新建不重名的面板
*
* @param prefix 前缀字符 // 只能保证当前模板不重名了
* @return 生成的名字
*/ /**
@Override * 新建不重名的面板
public String createUnrepeatedName(String prefix) { *
TableDataSource source = DesignTableDataManager.getEditingTableDataSource(); * @param prefix 前缀字符
if (source == null) { * @return 生成的名字
return super.createUnrepeatedName(prefix); */
} @Override
String[] allDsNames = DesignTableDataManager.getAllDSNames(source); public String createUnrepeatedName(String prefix) {
DefaultListModel model = this.getModel(); TableDataSource source = DesignTableDataManager.getEditingTableDataSource();
Nameable[] all = new Nameable[model.getSize()]; if (source == null) {
for (int i = 0; i < model.size(); i++) { return super.createUnrepeatedName(prefix);
all[i] = ((ListModelElement) model.get(i)).wrapper; }
} String[] allDsNames = DesignTableDataManager.getAllDSNames(source);
// richer:生成的名字从1开始. kunsnat: 添加属性从0开始. DefaultListModel model = this.getModel();
int count = all.length + 1; Nameable[] all = new Nameable[model.getSize()];
while (true) { for (int i = 0; i < model.size(); i++) {
String name_test = prefix + count; all[i] = ((ListModelElement) model.get(i)).wrapper;
boolean repeated = false; }
for (int i = 0, len = model.size(); i < len; i++) { // richer:生成的名字从1开始. kunsnat: 添加属性从0开始.
Nameable nameable = all[i]; int count = all.length + 1;
if (ComparatorUtils.equals(nameable.getName(), name_test)) { while (true) {
repeated = true; String name_test = prefix + count;
break; boolean repeated = false;
} for (int i = 0, len = model.size(); i < len; i++) {
} Nameable nameable = all[i];
for (String dsname : allDsNames) { if (ComparatorUtils.equals(nameable.getName(), name_test)) {
if (ComparatorUtils.equals(dsname, name_test)) { repeated = true;
repeated = true; break;
break; }
} }
} for (String dsname : allDsNames) {
if (ComparatorUtils.equals(dsname, name_test)) {
if (!repeated) { repeated = true;
return name_test; break;
} }
}
count++;
} if (!repeated) {
} return name_test;
}
@Override
protected String title4PopupWindow() { count++;
return "TableData"; }
} }
/** @Override
* Populate. protected String title4PopupWindow() {
*/ return "TableData";
public void populate(TableDataSource tds) { }
List<NameObject> nameObjectList = new ArrayList<NameObject>();
/**
Iterator tableDataNameIterator = tds.getTableDataNameIterator(); * Populate.
while (tableDataNameIterator.hasNext()) { */
String tableDataName = (String) tableDataNameIterator.next(); @Override
TableData tableData = tds.getTableData(tableDataName); public void populate(TableDataSource tds) {
List<NameObject> nameObjectList = new ArrayList<NameObject>();
if (tableData != null) {
nameObjectList.add(new NameObject(tableDataName, tableData)); Iterator tableDataNameIterator = tds.getTableDataNameIterator();
} while (tableDataNameIterator.hasNext()) {
} String tableDataName = (String) tableDataNameIterator.next();
TableData tableData = tds.getTableData(tableDataName);
populate(nameObjectList.toArray(new NameObject[nameObjectList.size()]));
} if (tableData != null) {
nameObjectList.add(new NameObject(tableDataName, tableData));
/** }
* Populate. }
*/
public void populate(DatasourceManagerProvider datasourceManager) { populate(nameObjectList.toArray(new NameObject[nameObjectList.size()]));
Iterator<String> nameIt = datasourceManager.getTableDataNameIterator(); }
Iterator<String> procedurenameIt = datasourceManager.getProcedureNameIterator();
List<NameObject> nameObjectList = new ArrayList<NameObject>(); /**
while (nameIt.hasNext()) { * Populate.
String name = nameIt.next(); */
nameObjectList.add(new NameObject(name, datasourceManager.getTableData(name))); @Override
} public void populate(DatasourceManagerProvider datasourceManager) {
while (procedurenameIt.hasNext()) { Iterator<String> nameIt = datasourceManager.getTableDataNameIterator();
String name = procedurenameIt.next(); Iterator<String> procedurenameIt = datasourceManager.getProcedureNameIterator();
nameObjectList.add(new NameObject(name, datasourceManager.getProcedureByName(name))); List<NameObject> nameObjectList = new ArrayList<NameObject>();
} while (nameIt.hasNext()) {
String name = nameIt.next();
populate(nameObjectList.toArray(new NameObject[nameObjectList.size()])); nameObjectList.add(new NameObject(name, datasourceManager.getTableData(name)));
} }
while (procedurenameIt.hasNext()) {
public void update(DatasourceManagerProvider datasourceManager) { String name = procedurenameIt.next();
datasourceManager.clearAllTableData(); nameObjectList.add(new NameObject(name, datasourceManager.getProcedureByName(name)));
datasourceManager.clearAllProcedure(); }
Nameable[] tableDataArray = this.update();
for (int i = 0; i < tableDataArray.length; i++) { populate(nameObjectList.toArray(new NameObject[nameObjectList.size()]));
NameObject nameObject = (NameObject) tableDataArray[i]; }
datasourceManager.putTableData(nameObject.getName(), (TableData) nameObject.getObject());
} @Override
} public void update(DatasourceManagerProvider datasourceManager) {
datasourceManager.clearAllTableData();
public void update(TableDataSource tds) { datasourceManager.clearAllProcedure();
tds.clearAllTableData(); Nameable[] tableDataArray = this.update();
for (int i = 0; i < tableDataArray.length; i++) {
Nameable[] tableDataArray = this.update(); NameObject nameObject = (NameObject) tableDataArray[i];
for (int i = 0; i < tableDataArray.length; i++) { datasourceManager.putTableData(nameObject.getName(), (TableData) nameObject.getObject());
NameObject nameObject = (NameObject) tableDataArray[i]; }
tds.putTableData(nameObject.getName(), (TableData) nameObject.getObject()); }
}
} @Override
public void update(TableDataSource tds) {
/** tds.clearAllTableData();
* 判断数据集是否重名
*/ Nameable[] tableDataArray = this.update();
public void checkValid() throws Exception { for (int i = 0; i < tableDataArray.length; i++) {
List<String> exsitTableDataNameList = new ArrayList<String>(); NameObject nameObject = (NameObject) tableDataArray[i];
// _denny: 判断是否有重复的数据集名 tds.putTableData(nameObject.getName(), (TableData) nameObject.getObject());
checkRepeatedDSName(exsitTableDataNameList); }
}
Nameable[] tableDataArray = this.update();
for (int i = 0; i < tableDataArray.length; i++) { /**
NameObject nameObject = (NameObject) tableDataArray[i]; * 判断数据集是否重名
*/
if (exsitTableDataNameList.contains(nameObject.getName())) { @Override
String[] waring = new String[]{"TableData", "Error_TableDataNameRepeat"}; public void checkValid() throws Exception {
String[] sign = new String[]{": " + nameObject.getName()}; List<String> exsitTableDataNameList = new ArrayList<String>();
throw new Exception(Inter.getLocText(waring, sign)); // _denny: 判断是否有重复的数据集名
} checkRepeatedDSName(exsitTableDataNameList);
exsitTableDataNameList.add(nameObject.getName()); Nameable[] tableDataArray = this.update();
} for (int i = 0; i < tableDataArray.length; i++) {
} NameObject nameObject = (NameObject) tableDataArray[i];
protected void checkRepeatedDSName(List<String> exsitTableDataNameList) { if (exsitTableDataNameList.contains(nameObject.getName())) {
} String[] waring = new String[]{"TableData", "Error_TableDataNameRepeat"};
String[] sign = new String[]{": " + nameObject.getName()};
/** throw new Exception(Inter.getLocText(waring, sign));
* 在JJControlPane的左侧Tree里面选中某一Item }
*
* @param name 被选择的Item名称 exsitTableDataNameList.add(nameObject.getName());
*/ }
public void selectName(String name) { }
this.setSelectedName(name);
} protected void checkRepeatedDSName(List<String> exsitTableDataNameList) {
}
public Map<String, String> getDsNameChangedMap() {
return this.dsNameChangedMap; /**
} * 在JJControlPane的左侧Tree里面选中某一Item
*
* @param name 被选择的Item名称
*/
public void selectName(String name) {
this.setSelectedName(name);
}
@Override
public Map<String, String> getDsNameChangedMap() {
return this.dsNameChangedMap;
}
@Override
public JPanel getPanel() {
return this;
}
/**
* 设置选中项
*
* @param index 选中项的序列号
*/
@Override
public void setSelectedIndex(int index) {
nameableList.setSelectedIndex(index);
}
} }

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.base.FRContext;
import com.fr.design.ExtraDesignClassManager; 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.fun.TableDataPaneProcessor;
import com.fr.design.gui.controlpane.JControlPane;
import com.fr.design.gui.frpane.LoadingBasicPane; import com.fr.design.gui.frpane.LoadingBasicPane;
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;
@ -21,7 +21,7 @@ import java.util.Map;
public class TableDataManagerPane extends LoadingBasicPane { public class TableDataManagerPane extends LoadingBasicPane {
private UITextField tableDataTextField; private UITextField tableDataTextField;
private JControlPane tableDataPane; private TableDataPaneController tableDataPane;
@Override @Override
protected void initComponents(JPanel container) { protected void initComponents(JPanel container) {
@ -40,17 +40,17 @@ public class TableDataManagerPane extends LoadingBasicPane {
tableDataPathPane.add(tableDataTextField, BorderLayout.CENTER); tableDataPathPane.add(tableDataTextField, BorderLayout.CENTER);
this.tableDataTextField.setEditable(false); this.tableDataTextField.setEditable(false);
TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor(); TableDataPaneProcessor paneProcessor = ExtraDesignClassManager.getInstance().getTableDataPaneProcessor();
JControlPane pane = null; TableDataPaneController pane = null;
if (paneProcessor != null) { if (paneProcessor != null) {
pane = paneProcessor.createServerTableDataPane(); pane = paneProcessor.createServerTableDataPane();
} }
tableDataPane = pane == null ? new TableDataListPane() { tableDataPane = pane == null ? new TableDataPaneListPane() {
protected void rename(String oldName, String newName) { public void rename(String oldName, String newName) {
super.rename(oldName, newName); super.rename(oldName, newName);
renameConnection(oldName, newName); renameConnection(oldName, newName);
} }
} : pane; } : 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.DesignModelAdapter;
import com.fr.design.data.BasicTableDataTreePane; 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; import com.fr.stable.fun.Level;
/** /**
@ -25,6 +25,6 @@ public interface TableDataPaneProcessor extends Level {
* 服务器数据集面板(模板数据集面板) * 服务器数据集面板(模板数据集面板)
* @return 服务器数据集面板 * @return 服务器数据集面板
*/ */
JControlPane createServerTableDataPane(); TableDataPaneController createServerTableDataPane();
} }

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

@ -1,20 +1,16 @@
package com.fr.design.gui.controlpane; package com.fr.design.gui.controlpane;
import com.fr.data.TableDataSource;
import com.fr.design.dialog.BasicPane; import com.fr.design.dialog.BasicPane;
import com.fr.design.gui.ilable.UILabel; import com.fr.design.gui.ilable.UILabel;
import com.fr.design.gui.itoolbar.UIToolbar; import com.fr.design.gui.itoolbar.UIToolbar;
import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.menu.ToolBarDef; import com.fr.design.menu.ToolBarDef;
import com.fr.design.utils.gui.GUICoreUtils; import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.file.DatasourceManagerProvider;
import com.fr.stable.ArrayUtils; import com.fr.stable.ArrayUtils;
import com.fr.stable.Nameable; import com.fr.stable.Nameable;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
import java.util.HashMap;
import java.util.Map;
/** /**
* Coder: zack * Coder: zack
@ -24,12 +20,12 @@ import java.util.Map;
public abstract class JControlPane extends BasicPane implements UnrepeatedNameHelper { public abstract class JControlPane extends BasicPane implements UnrepeatedNameHelper {
protected static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30 protected static final int SHORT_WIDTH = 30; //每加一个short Divider位置加30
protected JPanel controlUpdatePane; 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 // peter:这是整体的一个cardLayout Pane
protected CardLayout cardLayout; protected CardLayout cardLayout;
@ -46,6 +42,50 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
*/ */
public abstract NameableCreator[] createNameableCreators(); 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() { protected void initComponentPane() {
this.setLayout(FRGUIPaneFactory.createBorderLayout()); this.setLayout(FRGUIPaneFactory.createBorderLayout());
this.creators = this.createNameableCreators(); this.creators = this.createNameableCreators();
@ -75,7 +115,7 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
// LeftPane // LeftPane
JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane(); JPanel leftPane = FRGUIPaneFactory.createBorderLayout_S_Pane();
init(leftPane); initLeftPane(leftPane);
shorts = this.createShortcuts(); shorts = this.createShortcuts();
if (ArrayUtils.isEmpty(shorts)) { if (ArrayUtils.isEmpty(shorts)) {
@ -92,59 +132,10 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
return leftPane; 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; 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() { protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{ return new ShortCut4JControlPane[]{
@ -183,36 +167,12 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
protected abstract ShortCut4JControlPane sortItemShortCut(); protected abstract ShortCut4JControlPane sortItemShortCut();
public void setNameListEditable(boolean editable) {
}
public abstract Nameable[] update(); public abstract Nameable[] update();
public void populate(Nameable[] nameableArray) { 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. * 检查按钮可用状态 Check button enabled.
*/ */
@ -220,37 +180,33 @@ public abstract class JControlPane extends BasicPane implements UnrepeatedNameHe
} }
protected void doBeforeRemove() { protected void doBeforeRemove() {
} }
protected void doAfterRemove() { protected void doAfterRemove() {
} }
public NameableCreator[] creators() { public NameableCreator[] creators() {
return creators == null ? new NameableCreator[0] : creators; return creators == null ? new NameableCreator[0] : creators;
} }
/**
* 检查是否符合规范
*
* @throws Exception
*/
public void checkValid() throws Exception {
}
protected abstract boolean hasInvalid(boolean isAdd); 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) { toolbarDef.updateToolBar(toolBar);
dsNameChangedMap.put(oldName, newName); toolBar.validate();
toolBar.repaint();
this.repaint();
} }
} }

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

@ -51,6 +51,7 @@ public abstract class JListControlPane extends JControlPane {
this.initComponentPane(); this.initComponentPane();
} }
@Override
protected JPanel createControlUpdatePane() { protected JPanel createControlUpdatePane() {
return new JControlUpdatePane(); return new JControlUpdatePane();
} }
@ -60,32 +61,12 @@ public abstract class JListControlPane extends JControlPane {
* *
* @return 按钮的NameableCreator * @return 按钮的NameableCreator
*/ */
@Override
public abstract NameableCreator[] createNameableCreators(); public abstract NameableCreator[] createNameableCreators();
protected JPanel getLeftPane() { @Override
// LeftPane protected void initLeftPane(JPanel 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) {
nameableList = createJNameList(); nameableList = createJNameList();
nameableList.setName(LIST_NAME); nameableList.setName(LIST_NAME);
leftPane.add(new UIScrollPane(nameableList), BorderLayout.CENTER); leftPane.add(new UIScrollPane(nameableList), BorderLayout.CENTER);
@ -111,6 +92,7 @@ public abstract class JListControlPane extends JControlPane {
public JNameEdList createJNameList() { public JNameEdList createJNameList() {
JNameEdList nameEdList = new JNameEdList(new DefaultListModel()) { JNameEdList nameEdList = new JNameEdList(new DefaultListModel()) {
@Override
protected void doAfterLostFocus() { protected void doAfterLostFocus() {
JListControlPane.this.updateControlUpdatePane(); JListControlPane.this.updateControlUpdatePane();
} }
@ -127,23 +109,10 @@ public abstract class JListControlPane extends JControlPane {
} }
protected int getLeftPreferredSize() { @Override
return shorts.length * JControlPane.SHORT_WIDTH;
}
protected ShortCut4JControlPane[] createShortcuts() {
return new ShortCut4JControlPane[]{
addItemShortCut(),
removeItemShortCut(),
copyItemShortCut(),
moveUpItemShortCut(),
moveDownItemShortCut(),
sortItemShortCut()
};
}
protected ShortCut4JControlPane addItemShortCut() { protected ShortCut4JControlPane addItemShortCut() {
ShortCut addItemShortCut; ShortCut addItemShortCut;
NameableCreator[] creators = creators();
if (creators.length == 1) { if (creators.length == 1) {
addItemShortCut = new AddItemUpdateAction(creators); addItemShortCut = new AddItemUpdateAction(creators);
} else { } else {
@ -152,22 +121,27 @@ public abstract class JListControlPane extends JControlPane {
return new AbsoluteEnableShortCut(addItemShortCut); return new AbsoluteEnableShortCut(addItemShortCut);
} }
@Override
protected ShortCut4JControlPane removeItemShortCut() { protected ShortCut4JControlPane removeItemShortCut() {
return new NormalEnableShortCut(new RemoveItemAction()); return new NormalEnableShortCut(new RemoveItemAction());
} }
@Override
protected ShortCut4JControlPane copyItemShortCut() { protected ShortCut4JControlPane copyItemShortCut() {
return new NormalEnableShortCut(new CopyItemAction()); return new NormalEnableShortCut(new CopyItemAction());
} }
@Override
protected ShortCut4JControlPane moveUpItemShortCut() { protected ShortCut4JControlPane moveUpItemShortCut() {
return new NormalEnableShortCut(new MoveUpItemAction()); return new NormalEnableShortCut(new MoveUpItemAction());
} }
@Override
protected ShortCut4JControlPane moveDownItemShortCut() { protected ShortCut4JControlPane moveDownItemShortCut() {
return new NormalEnableShortCut(new MoveDownItemAction()); return new NormalEnableShortCut(new MoveDownItemAction());
} }
@Override
protected ShortCut4JControlPane sortItemShortCut() { protected ShortCut4JControlPane sortItemShortCut() {
return new NormalEnableShortCut(new SortItemAction()); return new NormalEnableShortCut(new SortItemAction());
} }
@ -176,6 +150,7 @@ public abstract class JListControlPane extends JControlPane {
this.nameableList.setEditable(editable); this.nameableList.setEditable(editable);
} }
@Override
public Nameable[] update() { public Nameable[] update() {
java.util.List<Nameable> res = new java.util.ArrayList<Nameable>(); java.util.List<Nameable> res = new java.util.ArrayList<Nameable>();
((JControlUpdatePane) this.controlUpdatePane).update(); ((JControlUpdatePane) this.controlUpdatePane).update();
@ -187,6 +162,7 @@ public abstract class JListControlPane extends JControlPane {
return res.toArray(new Nameable[res.size()]); return res.toArray(new Nameable[res.size()]);
} }
@Override
public void populate(Nameable[] nameableArray) { public void populate(Nameable[] nameableArray) {
DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel(); DefaultListModel listModel = (DefaultListModel) this.nameableList.getModel();
listModel.removeAllElements(); listModel.removeAllElements();
@ -264,25 +240,6 @@ public abstract class JListControlPane extends JControlPane {
return el == null ? null : el.wrapper.getName(); 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) { protected boolean isNameRepeted(java.util.List[] list, String name) {
for (int i = 0; i < list.length; i++) { for (int i = 0; i < list.length; i++) {
if (list[i].contains(name)) { if (list[i].contains(name)) {
@ -361,6 +318,7 @@ public abstract class JListControlPane extends JControlPane {
* @param prefix 名字前缀 * @param prefix 名字前缀
* @return 名字 * @return 名字
*/ */
@Override
public String createUnrepeatedName(String prefix) { public String createUnrepeatedName(String prefix) {
DefaultListModel model = this.getModel(); DefaultListModel model = this.getModel();
Nameable[] all = new Nameable[model.getSize()]; Nameable[] all = new Nameable[model.getSize()];
@ -401,6 +359,7 @@ public abstract class JListControlPane extends JControlPane {
this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png")); this.setSmallIcon(BaseUtils.readIcon("/com/fr/base/images/cell/control/add.png"));
} }
@Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
Nameable nameable = creator.createNameable(JListControlPane.this); Nameable nameable = creator.createNameable(JListControlPane.this);
@ -438,6 +397,7 @@ public abstract class JListControlPane extends JControlPane {
} }
} }
@Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if (hasInvalid(true)) { if (hasInvalid(true)) {
return; return;
@ -479,6 +439,7 @@ public abstract class JListControlPane extends JControlPane {
.readIcon("/com/fr/base/images/cell/control/remove.png")); .readIcon("/com/fr/base/images/cell/control/remove.png"));
} }
@Override
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
try { try {
JListControlPane.this.nameableList.getCellEditor() JListControlPane.this.nameableList.getCellEditor()
@ -506,6 +467,7 @@ public abstract class JListControlPane extends JControlPane {
.readIcon("/com/fr/base/images/cell/control/copy.png")); .readIcon("/com/fr/base/images/cell/control/copy.png"));
} }
@Override
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
// p:选中的值. // p:选中的值.
ListModelElement selectedValue = (ListModelElement) nameableList.getSelectedValue(); ListModelElement selectedValue = (ListModelElement) nameableList.getSelectedValue();
@ -540,6 +502,7 @@ public abstract class JListControlPane extends JControlPane {
.readIcon("/com/fr/design/images/control/up.png")); .readIcon("/com/fr/design/images/control/up.png"));
} }
@Override
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
int selectedIndex = nameableList.getSelectedIndex(); int selectedIndex = nameableList.getSelectedIndex();
if (selectedIndex == -1) { if (selectedIndex == -1) {
@ -572,6 +535,7 @@ public abstract class JListControlPane extends JControlPane {
.readIcon("/com/fr/design/images/control/down.png")); .readIcon("/com/fr/design/images/control/down.png"));
} }
@Override
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
int selectedIndex = nameableList.getSelectedIndex(); int selectedIndex = nameableList.getSelectedIndex();
if (selectedIndex == -1) { if (selectedIndex == -1) {
@ -602,6 +566,7 @@ public abstract class JListControlPane extends JControlPane {
.readIcon("/com/fr/design/images/control/sortAsc.png")); .readIcon("/com/fr/design/images/control/sortAsc.png"));
} }
@Override
public void actionPerformed(ActionEvent evt) { public void actionPerformed(ActionEvent evt) {
// p:选中的值. // p:选中的值.
Object selectedValue = nameableList.getSelectedValue(); Object selectedValue = nameableList.getSelectedValue();
@ -620,6 +585,7 @@ public abstract class JListControlPane extends JControlPane {
// p:排序. // p:排序.
if (isAtoZ) { if (isAtoZ) {
Comparator<Nameable> nameableComparator = new Comparator<Nameable>() { Comparator<Nameable> nameableComparator = new Comparator<Nameable>() {
@Override
public int compare(Nameable o1, Nameable o2) { public int compare(Nameable o1, Nameable o2) {
return -ComparatorUtils.compare(o1.getName(), o2 return -ComparatorUtils.compare(o1.getName(), o2
.getName()); .getName());
@ -629,6 +595,7 @@ public abstract class JListControlPane extends JControlPane {
Arrays.sort(nameableArray, nameableComparator); Arrays.sort(nameableArray, nameableComparator);
} else { } else {
Comparator<Nameable> nameableComparator = new Comparator<Nameable>() { Comparator<Nameable> nameableComparator = new Comparator<Nameable>() {
@Override
public int compare(Nameable o1, Nameable o2) { public int compare(Nameable o1, Nameable o2) {
return ComparatorUtils.compare(o1.getName(), o2 return ComparatorUtils.compare(o1.getName(), o2
.getName()); .getName());
@ -657,6 +624,7 @@ public abstract class JListControlPane extends JControlPane {
* JNameEdList的鼠标事件 * JNameEdList的鼠标事件
*/ */
private MouseListener listMouseListener = new MouseAdapter() { private MouseListener listMouseListener = new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent evt) { public void mouseReleased(MouseEvent evt) {
nameableList.stopEditing(); nameableList.stopEditing();
if (evt.getClickCount() >= 2 if (evt.getClickCount() >= 2
@ -676,7 +644,7 @@ public abstract class JListControlPane extends JControlPane {
// p:右键菜单. // p:右键菜单.
JPopupMenu popupMenu = new JPopupMenu(); JPopupMenu popupMenu = new JPopupMenu();
for (ShortCut4JControlPane sj : shorts) { for (ShortCut4JControlPane sj : getShorts()) {
sj.getShortCut().intoJPopupMenu(popupMenu); sj.getShortCut().intoJPopupMenu(popupMenu);
} }
@ -685,6 +653,7 @@ public abstract class JListControlPane extends JControlPane {
evt.getY() - 1); evt.getY() - 1);
} }
@Override
public void mouseMoved(MouseEvent e) { public void mouseMoved(MouseEvent e) {
} }
@ -693,35 +662,26 @@ public abstract class JListControlPane extends JControlPane {
/** /**
* 检查按钮可用状态 Check button enabled. * 检查按钮可用状态 Check button enabled.
*/ */
@Override
public void checkButtonEnabled() { public void checkButtonEnabled() {
int selectedIndex = nameableList.getSelectedIndex(); int selectedIndex = nameableList.getSelectedIndex();
if (selectedIndex == -1) { if (selectedIndex == -1) {
this.cardLayout.show(cardPane, "SELECT"); this.cardLayout.show(cardPane, "SELECT");
} else { } else {
this.cardLayout.show(cardPane, "EDIT"); this.cardLayout.show(cardPane, "EDIT");
} }
for (ShortCut4JControlPane sj : this.shorts) { for (ShortCut4JControlPane sj : getShorts()) {
sj.checkEnable(); sj.checkEnable();
} }
} }
protected void doBeforeRemove() {
}
protected void doAfterRemove() {
}
public NameableCreator[] creators() {
return creators == null ? new NameableCreator[0] : creators;
}
/* /*
* Nameable的ListCellRenerer * Nameable的ListCellRenerer
*/ */
private class NameableListCellRenderer extends private class NameableListCellRenderer extends
DefaultListCellRenderer { DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) { int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, super.getListCellRendererComponent(list, value, index, isSelected,
@ -732,7 +692,7 @@ public abstract class JListControlPane extends JControlPane {
this.setText(((ListModelElement) value).wrapper.getName()); this.setText(((ListModelElement) value).wrapper.getName());
boolean iconSet = false; boolean iconSet = false;
for (NameableCreator creator : JListControlPane.this.creators) { for (NameableCreator creator : JListControlPane.this.creators()) {
if (creator.menuIcon() != null && creator.acceptObject2Populate(wrappee) != null) { if (creator.menuIcon() != null && creator.acceptObject2Populate(wrappee) != null) {
this.setIcon(creator.menuIcon()); this.setIcon(creator.menuIcon());
this.setToolTipText(creator.createTooltip()); this.setToolTipText(creator.createTooltip());
@ -757,6 +717,7 @@ public abstract class JListControlPane extends JControlPane {
/** /**
* 检查是否可用 * 检查是否可用
*/ */
@Override
public void checkEnable() { public void checkEnable() {
this.shortCut.setEnabled(true); this.shortCut.setEnabled(true);
} }
@ -770,6 +731,7 @@ public abstract class JListControlPane extends JControlPane {
/** /**
* 检查是否可用 * 检查是否可用
*/ */
@Override
public void checkEnable() { public void checkEnable() {
this.shortCut.setEnabled(getModel() this.shortCut.setEnabled(getModel()
.getSize() > 0 .getSize() > 0
@ -836,6 +798,7 @@ public abstract class JListControlPane extends JControlPane {
} }
private void initUpdatePane() { private void initUpdatePane() {
NameableCreator[] creators = creators();
if (creators == null) { if (creators == null) {
return; return;
} }
@ -855,6 +818,7 @@ public abstract class JListControlPane extends JControlPane {
} }
elEditing = el; elEditing = el;
NameableCreator[] creators = creators();
for (int i = 0, len = updatePanes.length; i < len; i++) { for (int i = 0, len = updatePanes.length; i < len; i++) {
Object ob2Populate = creators[i].acceptObject2Populate(el.wrapper); Object ob2Populate = creators[i].acceptObject2Populate(el.wrapper);
@ -884,13 +848,14 @@ public abstract class JListControlPane extends JControlPane {
} }
public void update() { public void update() {
NameableCreator[] creators = creators();
for (int i = 0; i < updatePanes.length; i++) { for (int i = 0; i < updatePanes.length; i++) {
BasicBeanPane pane = updatePanes[i]; BasicBeanPane pane = updatePanes[i];
if (pane != null && pane.isVisible()) { if (pane != null && pane.isVisible()) {
Object bean = pane.updateBean(); Object bean = pane.updateBean();
if (i < JListControlPane.this.creators.length) { if (i < creators.length) {
JListControlPane.this.creators[i].saveUpdatedBean(elEditing, bean); creators[i].saveUpdatedBean(elEditing, bean);
} }
} }
} }
@ -937,8 +902,9 @@ public abstract class JListControlPane extends JControlPane {
// 选项添加个数有限制等情况下 要求能控制快捷按钮的状态 // 选项添加个数有限制等情况下 要求能控制快捷按钮的状态
protected void setToolbarDefEnable(int shortCutIndex, int itemIndex, boolean enabled) { protected void setToolbarDefEnable(int shortCutIndex, int itemIndex, boolean enabled) {
if (this.toolbarDef.getShortCutCount() > shortCutIndex) { ToolBarDef toolbarDef = getToolbarDef();
ShortCut sc = this.toolbarDef.getShortCut(shortCutIndex); if (toolbarDef.getShortCutCount() > shortCutIndex) {
ShortCut sc = toolbarDef.getShortCut(shortCutIndex);
if (sc instanceof AddItemMenuDef) { if (sc instanceof AddItemMenuDef) {
AddItemMenuDef am = (AddItemMenuDef) sc; AddItemMenuDef am = (AddItemMenuDef) sc;
if (am.getShortCutCount() > itemIndex) { if (am.getShortCutCount() > itemIndex) {
@ -953,6 +919,7 @@ public abstract class JListControlPane extends JControlPane {
* *
* @throws Exception * @throws Exception
*/ */
@Override
public void checkValid() throws Exception { public void checkValid() throws Exception {
((JControlUpdatePane) this.controlUpdatePane).checkValid(); ((JControlUpdatePane) this.controlUpdatePane).checkValid();
} }
@ -973,6 +940,7 @@ public abstract class JListControlPane extends JControlPane {
return -1; return -1;
} }
@Override
protected boolean hasInvalid(boolean isAdd) { protected boolean hasInvalid(boolean isAdd) {
int idx = JListControlPane.this.getInValidIndex(); int idx = JListControlPane.this.getInValidIndex();
if (isAdd || nameableList.getSelectedIndex() != idx) { if (isAdd || nameableList.getSelectedIndex() != idx) {
@ -987,13 +955,4 @@ public abstract class JListControlPane extends JControlPane {
return false; return false;
} }
/**
* 设置选中项
*
* @param index 选中项的序列号
*/
public void setSelectedIndex(int index) {
nameableList.setSelectedIndex(index);
}
} }
Loading…
Cancel
Save