📄 uiutil.java
字号:
package net.sf.pim;
import java.io.BufferedInputStream;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import net.sf.component.calendar.SWTCalendar;
import net.sf.component.table.BeanBindedTableModel;
import net.sf.component.table.BindedTableColumn;
import net.sf.component.table.BindedTableViewer;
import net.sf.component.table.IBindedTableModel;
import net.sf.component.table.TextBindedTableColumn;
import net.sf.pim.action.AboutAction;
import net.sf.pim.action.AddAction;
import net.sf.pim.action.ConfigAction;
import net.sf.pim.action.CurAction;
import net.sf.pim.action.DeleteAction;
import net.sf.pim.action.DownAction;
import net.sf.pim.action.ExportAction;
import net.sf.pim.action.HelpAction;
import net.sf.pim.action.ImportAction;
import net.sf.pim.action.NextAction;
import net.sf.pim.action.PersonalPspAction;
import net.sf.pim.action.PositionAction;
import net.sf.pim.action.PreAction;
import net.sf.pim.action.QuitAction;
import net.sf.pim.action.SaveAction;
import net.sf.pim.action.Search1Action;
import net.sf.pim.action.Search2Action;
import net.sf.pim.action.Search3Action;
import net.sf.pim.action.SubAction;
import net.sf.pim.action.Tj2Action;
import net.sf.pim.action.Tj3Action;
import net.sf.pim.action.TjAction;
import net.sf.pim.action.UpAction;
import net.sf.pim.model.Personal;
import net.sf.pim.model.psp.Work;
import net.sf.pim.model.psp.WorkList;
import net.sf.pim.plugin.view.PspEditor;
import net.sf.pim.view.UiCellSorter;
import net.sf.util.ConfigHelper;
import net.sf.util.StringUtil;
import net.sf.util.persistence.DMFactory;
import net.sf.util.persistence.DataException;
import net.sf.util.persistence.IDataManager;
import net.sf.util.persistence.IEntry;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ControlEditor;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.custom.TableCursor;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.ScrollBar;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.XMLMemento;
import org.eclipse.ui.internal.IWorkbenchConstants;
import org.eclipse.ui.internal.PartSite;
import org.eclipse.ui.internal.ViewSashContainer;
import org.eclipse.ui.internal.ViewStack;
/**
* Created by IntelliJ IDEA.
* Date: 2004-1-16
* Time: 10:22:30
*/
public class UiUtil {
private final static class WorkLabelProvider implements ITableLabelProvider,IColorProvider {
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
public String getColumnText(Object element, int columnIndex) {
if (element instanceof IEntry)
return ((IEntry) element).getContent()[columnIndex];
else
return "";
}
public void addListener(ILabelProviderListener listener) {
}
public void dispose() {
}
public boolean isLabelProperty(Object element, String property) {
return false;
}
public void removeListener(ILabelProviderListener listener) {
}
public Color getForeground(Object element) {
if (element instanceof Work && StringUtil.parseInt(((Work) element).getGzsj()) > ConfigHelper.getWarningMinutes())
return Display.getCurrent().getSystemColor(SWT.COLOR_DARK_YELLOW);
return null;
}
public Color getBackground(Object element) {
return null;
}
}
//字体
private static Font font;
//actionset
private static Map<String,IAction> actionMap =new HashMap<String,IAction>();
//垂直分隔
private static SashForm sf;
//下方的水平分隔
private static SashForm sf2;
private static ITableFolder tableFolder;
private UiUtil() {
}
//注意自己dispose
public static Font getFont(){
if(font == null || font.isDisposed())
font=new Font(Display.getCurrent(), "宋体", 11, SWT.NORMAL);
return font;
}
public static Map<String,IAction> getActionMap(){
return actionMap;
}
public static void setActionMap(Map<String,IAction> map){
actionMap=map;
}
/* public static void initActionMap(){
//初始化动作集合
actionMap.put("save", new SaveAction());
actionMap.put("position", new PositionAction());
actionMap.put("import", new ImportAction());
actionMap.put("export", new ExportAction());
actionMap.put("pre", new PreAction());
actionMap.put("cur", new CurAction());
actionMap.put("next", new NextAction());
actionMap.put("sub", new SubAction());
actionMap.put("search1", new Search1Action());
actionMap.put("search2", new Search2Action());
actionMap.put("search3", new Search3Action());
actionMap.put("about", new AboutAction());
actionMap.put("quit", new QuitAction());
actionMap.put("config", new ConfigAction());
actionMap.put("add", new AddAction());
actionMap.put("delete", new DeleteAction());
actionMap.put("up", new UpAction());
actionMap.put("down", new DownAction());
actionMap.put("tj", new TjAction());
actionMap.put("tj2", new Tj2Action());
actionMap.put("tj3", new Tj3Action());
actionMap.put("help", new HelpAction());
actionMap.put("personalpsp", new PersonalPspAction());
//actionMap.put("print",new PrintAction(this));
}
*/
/**
* 初始化表格
*/
public static TableViewer initTableViewer(final UiCore uc, final WorkList wl, Composite parent) {
TableViewer tv0 = new TableViewer(parent, SWT.MULTI | SWT.BORDER | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL);
//准备数据
String[] header = getHeaderMc();
int[] headerSize = ConfigHelper.getHeaderSize();
Work[] list = wl.getWorks();
if (list.length == 0) {
list = new Work[]{new Work()};
list[0].setRq(StringUtil.getCurrentDay());
list[0].setWid(String.valueOf(1));
}
Table table = tv0.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
table.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (!uc.isMulti()) {
if ((TableItem) e.item != uc.getTableCursor().getRow())
uc.getTableCursor().setSelection((TableItem) e.item, uc.getTableCursor().getColumn());
uc.getTableCursor().setVisible(true);
uc.getTv().getTable().setSelection(new TableItem[]{uc.getTableCursor().getRow()});
uc.getTableCursor().setFocus();
}
}
});
//使用TableCursor
final TableCursor cursor = new TableCursor(table, SWT.NONE);
uc.setTableCursor(cursor);
final ControlEditor editor = new ControlEditor(cursor);
editor.grabHorizontal = true;
editor.grabVertical = true;
editor.minimumWidth = 50;
cursor.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (!uc.isMulti()) {
if ((TableItem) e.item != uc.getTableCursor().getRow())
uc.getTv().getTable().setSelection(new TableItem[]{uc.getTableCursor().getRow()});
}
}
});
cursor.addMouseListener(new MouseAdapter() {
public void mouseDoubleClick(MouseEvent me) {
adapterEvent(uc, editor);
}
});
cursor.addTraverseListener(new TraverseListener() {
public void keyTraversed(TraverseEvent event) {
if (event.detail == SWT.TRAVERSE_RETURN)
adapterEvent(uc,editor);
if (event.detail == SWT.TRAVERSE_TAB_NEXT || event.detail == SWT.TRAVERSE_TAB_PREVIOUS) {
focusNext(event, cursor);
event.doit = false;
}
}
});
for (int i = 0; i < header.length; i++) {
TableColumn column = new TableColumn(table, SWT.NULL);
column.setText(header[i]);
column.setWidth(i< headerSize.length ? headerSize[i]:80);
//将column的key保存在data中
column.setData(getHeaderJc()[i]);
//在汇总模式下可排序
column.addListener(SWT.Selection, new UiCellSorter(uc));
}
//set contenet provider
tv0.setContentProvider(new IStructuredContentProvider() {
public void dispose() {
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
if (newInput == null)
return;
//输入变化先隐藏TableCursor
if (uc != null && uc.getTableCursor() != null) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -