⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uiutil.java

📁 Eclipse RCP下编写的工作管理软件代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
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 + -