📄 uiutil.java
字号:
}
});
adapterListEvent(cellEdit, cursor, editor);
}
else {
final Text cellEdit = new Text(cursor, SWT.LEFT);
cellEdit.setFont(uc.getTv().getTable().getFont());
adapterTextEvent(cellEdit, cursor, editor);
}
uc.setDirty(true);
}
/*Text的事件处理*/
private static void adapterTextEvent(final Text cellEdit, final TableCursor cursor, final ControlEditor editor) {
TableItem row = cursor.getRow();
int column = cursor.getColumn();
TableColumn tc=((Table)cursor.getParent()).getColumn(column);
cellEdit.setText(row.getText(column));
//在此判断是否显示当前时间以HH:MM 2004.04.27 levin
if(ConfigHelper.showDateTip() && StringUtil.convertNull(cellEdit.getText()).equals("")){
if (tc.getData().equals("kssj") || tc.getData().equals("jssj")){
cellEdit.setText(StringUtil.getSysTime());
}
//如果存在上一行,则拷贝above.jssj --> self.kssj,默认开始时间前为序号
if (tc.getData().equals("kssj")){
int self=StringUtil.parseInt(row.getText( column -1));
if(self > 1){
Table tt=(Table)cursor.getParent();
cellEdit.setText(StringUtil.convertNull(tt.getItem(self -2).getText(column +1)));
}
}
//如果存在下一行,则拷贝below.kssj --> self.jssj, 2006.01.09 levin
if (tc.getData().equals("jssj")){
int self=StringUtil.parseInt(row.getText( column - 2));
Table tt=(Table)cursor.getParent();
if(self < tt.getItemCount()){
cellEdit.setText(StringUtil.convertNull(tt.getItem(self).getText(column-1)));
}
}
}
cellEdit.selectAll();
cellEdit.addTraverseListener(new TraverseListener() {
public void keyTraversed(TraverseEvent e) {
if (e.detail == SWT.TRAVERSE_TAB_NEXT
|| e.detail == SWT.TRAVERSE_TAB_PREVIOUS
|| e.detail == SWT.TRAVERSE_RETURN) {
synTextCellValue(cursor, cellEdit);
//后移或前移
focusNext(e, cursor);
//e.doit = false;
}
if (e.detail == SWT.TRAVERSE_ESCAPE) {
cellEdit.dispose();
}
}
});
cellEdit.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
synTextCellValue(cursor, cellEdit);
}
});
editor.setEditor(cellEdit);
cellEdit.setFocus();
}
/**
* List的事件处理
*/
private static void adapterListEvent(final List cellEdit, final TableCursor cursor, final ControlEditor editor) {
TableItem row = cursor.getRow();
int column = cursor.getColumn();
String org = row.getText(column);
if (!StringUtil.convertNull(org).equals(""))
for (int i = 0; i < cellEdit.getItemCount(); i++)
if (cellEdit.getItem(i).equals(org))
cellEdit.setSelection(i);
//修正没有选中时focus的错误
if (cellEdit.getSelectionIndex() == -1)
cellEdit.setSelection(0);
cellEdit.showSelection();
cellEdit.addTraverseListener(new TraverseListener() {
public void keyTraversed(TraverseEvent e) {
if (e.detail == SWT.TRAVERSE_TAB_NEXT
|| e.detail == SWT.TRAVERSE_TAB_PREVIOUS
|| e.detail == SWT.TRAVERSE_RETURN) {
TableItem row = cursor.getRow();
int column = cursor.getColumn();
row.setText(column, cellEdit.getSelection()[0]);
cellEdit.dispose();
//后移或前移
focusNext(e, cursor);
//e.doit = false;
}
if (e.detail == SWT.TRAVERSE_ESCAPE) {
cellEdit.dispose();
}
}
});
cellEdit.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
TableItem row = cursor.getRow();
int column = cursor.getColumn();
row.setText(column, cellEdit.getSelection()[0]);
cellEdit.dispose();
}
});
editor.setEditor(cellEdit);
cellEdit.setFocus();
}
private static void focusNext(TraverseEvent e, final TableCursor cursor) {
TableItem row = cursor.getRow();
int column = cursor.getColumn();
if (e.detail != SWT.TRAVERSE_TAB_PREVIOUS)
cursor.setSelection(row, column == ((Table)cursor.getParent()).getColumnCount() - 1 ? column : column + 1);
else
cursor.setSelection(row, column == 0 ? column : column - 1);
}
private static Object instance(final Class clazz) {
try {
return clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static ITableFolder getTableFolder() {
if(tableFolder==null)
tableFolder=new DefaultTableFolder();
return tableFolder;
}
//配置修改后的重绘页面
public static void init() {
// Composite composite=sf.getParent();
// int indexEditor=tfEditor.getSelectionIndex();
// int indexTool=tfTool.getSelectionIndex();
// sf.dispose();
// initContentPane(UiWork.self,composite);
// tfEditor.setSelection(indexEditor);
// tfTool.setSelection(indexTool);
// composite.layout();
}
//取某天的计划列表
private static Map<String,String[]> plansCache=new HashMap<String,String[]>(1); //缓存一个计划列表
public static Map<String, String[]> getPlansCache() {
return plansCache;
}
private static String[] getPlans(String day){
if(plansCache.get(day) != null)
return plansCache.get(day);
try {
java.util.List list=DMFactory.getDataManager(Personal.class).readList(StringUtil.getWeek(day));
String[] plans=new String[list.size()+1];
plans[0]="";
for(int i=1;i<plans.length;i++)
plans[i]=((Personal)list.get(i-1)).task;
plansCache.clear();
plansCache.put(day,plans);
return plans;
} catch (DataException e) {
return new String[]{""};
}
}
//当前的UiCore
public static UiCore getInstance(){
if(PspEditor.self != null)
return PspEditor.self;
return null;
}
//保存位置
public static void savePosition(){
IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
PartSite part = (PartSite) activePage.getActivePart().getSite();
//2007010 如果当前透视图不是PSP,则不保存位置
if(! "net.sf.psp".equals(part.getPluginId()))
return ;
// 取表头的间隔
Table table = getInstance().getTv().getTable();
TableColumn[] tcs = table.getColumns();
int[] headerSize = new int[tcs.length];
for (int i = 0; i < headerSize.length; i++) {
headerSize[i] = tcs[i].getWidth();
}
// 取窗体大小
Point point = table.getShell().getSize();
int[] windowSize = new int[] { point.x, point.y };
// 取窗体位置
Point point2 = table.getShell().getLocation();
int[] windowLocation = new int[] { point2.x, point2.y };
Properties pr = ConfigHelper.getPropList();
pr.setProperty("work.headersize", StringUtil.int2string(headerSize));
pr.setProperty("work.windowsize", StringUtil.int2string(windowSize));
pr.setProperty("work.windowlocation", StringUtil.int2string(windowLocation));
pr.setProperty("work.verticalsize", StringUtil.int2string(UiUtil.getVerticalSize()));
pr.setProperty("work.horizontalsize", StringUtil.int2string(UiUtil.getHorizontalSize()));
// 保存各btv的位置
for (ITableEditor editor : UiUtil.getTableFolder().getEditors()) {
BindedTableViewer btv = editor.getViewer();
if (btv != null) {
String name = btv.getModel().createRow().getClass().getSimpleName().toLowerCase();
TableColumn[] tc = btv.getTable().getColumns();
Map map=new HashMap(tc.length);
for (int k = 0; k < tc.length; k++) {
map.put(tc[k].getData(), tc[k].getWidth());
}
pr.setProperty(name + ".headersize", StringUtil.fromMap(map, ";"));
}
}
if(UiUtil.getInstance() instanceof PspEditor){
// 保存view的相对位置
ViewStack stack = (ViewStack) part.getPane().getContainer();
ViewSashContainer container = (ViewSashContainer) stack.getContainer();
XMLMemento memento = XMLMemento.createWriteRoot("DummyStatus");
container.saveState(memento);
IMemento[] children = memento.getChildren(IWorkbenchConstants.TAG_INFO);
//保持UiPerspective布局不变情况下,只对最后两个布局信息感兴趣
//垂直间隔
IMemento vchild = children[children.length -2];
int vleft= vchild.getInteger(IWorkbenchConstants.TAG_RATIO_LEFT);
int vright = vchild.getInteger(IWorkbenchConstants.TAG_RATIO_RIGHT);
pr.setProperty("work.verticalsize", StringUtil.int2string(new int[]{vleft,vright}));
//水平间隔
IMemento hchild = children[children.length -1];
int hleft= hchild.getInteger(IWorkbenchConstants.TAG_RATIO_LEFT);
int hright = hchild.getInteger(IWorkbenchConstants.TAG_RATIO_RIGHT);
pr.setProperty("work.horizontalsize", StringUtil.int2string(new int[]{hleft,hright}));
}
ConfigHelper.store();
}
//取表头名称
public static String[] getHeaderMc() {
return new Work().getFieldDescs();
}
//取表头简称
public static String[] getHeaderJc() {
return new Work().getFieldNames();
}
public static String getToDoList() {
StringBuffer sb = new StringBuffer();
try {
BufferedInputStream bis = new BufferedInputStream(URLUtil.getResourceURL("docs/readme.txt").openStream());
byte[] b = new byte[bis.available()];
bis.read(b);
sb.append(new String(b));
bis.close();
}
catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -