📄 abstractconfigurationwindow.java
字号:
int id = labels.indexOf(e.getSource());
if(currentPageId != id)
setCurrentPage(id);
}
});
// 如果当前没有页没选中,设置这个页为当前页
pageCount++;
if(currentPageId == NONE_SELECTED)
setCurrentPage(0);
}
/**
* 设置左边的页面列表宽度
*
* @param w
*/
protected void setPageListWidth(int w) {
GridData gd = (GridData)pageList.getLayoutData();
gd.widthHint = w;
pageList.getParent().layout();
}
/**
* 删除当前页
*/
public void removeCurrentPage() {
if(currentPageId == NONE_SELECTED)
return;
int page = currentPageId;
setCurrentPage(NONE_SELECTED);
labels.remove(page).dispose();
getPageListContainer().layout();
pages.remove(page);
pageCount--;
pageRemoved(page);
if(pageCount > 0)
setCurrentPage(0);
}
/**
* 页被删除时调用此方法
*
* @param index
* 页号
*/
protected void pageRemoved(int index) {
}
/**
* 设置当前页
*
* @param i
* 页索引
*/
public void setCurrentPage(int i) {
if(i == currentPageId)
return;
if(i != NONE_SELECTED && (i < 0 || i >= pageCount))
return;
if(currentPageId != NONE_SELECTED) {
getCurrentPage().setVisible(false);
getCurrentPageLabel().setBackground(Colors.PAGE_LIST_BACKGROUND);
}
currentPageId = i;
if(currentPageId != NONE_SELECTED) {
getCurrentPage().setVisible(true);
getCurrentPageLabel().setBackground(Colors.PAGE_LIST_SELECTED);
}
pageChanged();
}
/**
* @return
* 当前页面标签
*/
protected CLabel getCurrentPageLabel() {
return labels.get(currentPageId);
}
/**
* @return
* 当前页对象
*/
protected AbstractPage getCurrentPage() {
return pages.get(currentPageId);
}
/**
* @return
* 窗口初始大小
*/
protected Point getInitialSize() {
return new Point(400, 300);
}
/**
* @return
* 窗口初始位置
*/
protected Point getInitialLocation() {
// 缺省实现是把窗口居中
Rectangle shellRect = shell.getBounds();
Rectangle displayRect = shell.getDisplay().getClientArea();
return new Point((displayRect.width - shellRect.width) / 2, (displayRect.height - shellRect.height) / 2);
}
/**
* 初始化配置页
*/
protected void initialPages() {
}
/**
* @return
* 窗口标题
*/
protected abstract String getTitle();
/**
* @return
* 窗口图标
*/
protected abstract Image getImage();
/**
* 当前页变化时调用此方法
*/
protected void pageChanged() {
}
/**
* 窗口关闭时调用此方法
*/
protected void onShellClose() {
}
/**
* 窗口释放时调用此方法
*/
protected void onDispose() {
}
/**
* 保存所有的更改
*/
protected void saveAll() {
for(AbstractPage page : pages)
page.save();
}
/**
* 保存所有的更改并关闭窗口
*/
protected void saveAllAndClose() {
saveAll();
close();
}
/**
* 关闭窗口
*/
public void close() {
shell.close();
}
/**
* 确定按钮按下时调用这个方法
*/
protected void onOK() {
}
/**
* 设置确定按钮的文字
*
* @param text
* 按钮文本
*/
protected void setOKButtonText(String text) {
btnOK.setText(text);
}
/**
* 设置确定按钮使能状态
*
* @param b
* true表示enable
*/
public void setOKButtonEnabled(boolean b) {
btnOK.setEnabled(b);
}
/**
* @return
* true表示显示确定按钮
*/
protected boolean showOKButton() {
return true;
}
/**
* @return
* true表示显示关闭按钮
*/
protected boolean showCloseButton() {
return true;
}
/**
* 设置关闭按钮的文本
*
* @param text
* 按钮文本
*/
protected void setCloseButtonText(String text) {
btnClose.setText(text);
}
/**
* @return
* 当前页索引
*/
protected int getCurrentPageId() {
return currentPageId;
}
/**
* @return
* 页数
*/
protected int getPageCount() {
return pages.size();
}
/**
* 设置窗口最小化状态
*
* @param b
*/
public void setMinimized(boolean b) {
shell.setMinimized(b);
}
/**
* 激活窗口
*/
public void setActive() {
shell.setActive();
}
/**
* @return
* 页面容器
*/
protected Composite getPageContainer() {
return pageContainer;
}
/**
* 刷新所有页的model
*
* @param model
* model对象
*/
protected void refreshPageModels(Object model) {
for(AbstractPage page : pages)
page.setModel(model);
}
/**
* 刷新所有页的值
*/
protected void refreshPageValues() {
for(AbstractPage page : pages)
page.refreshValues();
}
/**
* @return
* page遍历器
*/
protected Iterator<AbstractPage> getPageIterator() {
return pages.iterator();
}
/**
* @return
* Shell
*/
public Shell getShell() {
return shell;
}
/**
* @return
* 页面列表容器
*/
protected Composite getPageListContainer() {
return pageList;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -