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

📄 uiutil.java

📁 Eclipse RCP下编写的工作管理软件代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                    uc.getTableCursor().setVisible(false);
                }
            }

            public Object[] getElements(Object input) {
                if (input instanceof IEntry[])
                    return (IEntry[]) input;
                else
                    return new Object[0];
            }
        });
        tv0.setLabelProvider(new WorkLabelProvider());
        tv0.setColumnProperties(getHeaderJc());
        tv0.setInput(list);
        uc.setWorkDay(StringUtil.getCurrentDay());
        return tv0;
    }

	/**
	 * 创建编辑器
	 */
	public static BindedTableViewer initTabEditor(Composite parent, final Class clazz,final String id) {
		java.util.List list=new ArrayList();
		try {
			list = DMFactory.getDataManager(clazz).readList(id);
		} catch (DataException e1) {
			e1.printStackTrace();
		}
		IBindedTableModel model = new BeanBindedTableModel(list) {
			public Object createRow() {
				IEntry entry=(IEntry) instance(clazz);
				//若存在week或rq等chunk,且id不为空,则置
				if(!StringUtil.isNull(id) && Arrays.asList(entry.getFieldNames()).contains("week")){
					entry.setProperty("week", getChunkId());
					entry.setProperty("num",String.valueOf(getRows().size()+1));
				}
				return entry;
			}
		};
		model.setChunkId(id);
		
		IEntry entry=(IEntry) instance(clazz);
		String[] fieldNames = entry.getFieldNames();
		String[] fieldDescs = entry.getFieldDescs();
		for(int i=0;i<fieldNames.length;i++){
			BindedTableColumn btc=new TextBindedTableColumn(fieldNames[i]);
			btc.setShowName(fieldDescs[i]);
			model.addColumn(btc);
		}
		
		BindedTableViewer bindedTableViewer = new BindedTableViewer(parent, SWT.NONE);
		bindedTableViewer.setModel( model);
		bindedTableViewer.setRowCreateRemovable( false);
		bindedTableViewer.setRowsOrderable( false);
		bindedTableViewer.setColsOrderable( false);
		bindedTableViewer.getTableViewer().getTable().setFont(getFont());
		bindedTableViewer.create();
		return bindedTableViewer;
	}    
	
	public static int[] getVerticalSize(){
		if(sf != null)
			return sf.getWeights();
		return new int[]{62,38};
	}
	
	public static int[] getHorizontalSize(){
		if(sf2 != null)
			return sf2.getWeights();
		return new int[]{30,70};
	}
	
    public static WorkList getData(UiCore ui) {
        Table table = (Table) ui.getTv().getControl();
        TableItem[] ti = table.getItems();
        Work[] list = new Work[ti.length];
        String[] ss = new String[table.getColumnCount()];
        for (int i = 0; i < list.length; i++) {
            for (int j = 0; j < ss.length; j++)
                ss[j] = ti[i].getText(j);
            list[i] = new Work();
            list[i].setContent(ss);
        }
        WorkList wl=new WorkList();
        wl.setWorks(list);
        wl.setMemo(ui.getMemoText().getText());
        return wl;
    }
	
    public static void checkSave(UiCore ui){
    	ArrayList<String> needSave=new ArrayList<String>();
    	if(ui.isDirty())
    		needSave.add("日志");
		for(ITableEditor editor:tableFolder.getEditors()){
			BindedTableViewer btv=editor.getViewer();
			if(btv != null && btv.getModel().isDirty())
				needSave.add(editor.getName());
		}
    	if(!needSave.isEmpty()){
            if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(), "提示", needSave+"已被修改,是否保存?")) {
            	//逐个保存
            	try
            	{
            		if(ui.isDirty()){
            			ui.getDataManager().createData(ui.getData());
            			ui.setDirty(false);
            		}
            		for(ITableEditor editor:tableFolder.getEditors()){
            			BindedTableViewer btv=editor.getViewer();
            			if(btv != null && btv.getModel().isDirty()){
            				IDataManager idm = DMFactory.getDataManager(btv.getModel().createRow().getClass());
            				idm.createList(btv.getModel().getRows(),btv.getModel().getChunkId());
            				btv.getModel().setDirty(false);
            			}
            		}
           		
            	}catch(DataException e){
            		e.printStackTrace();
            	}
            }else {
            	//清除“脏”标记
        		if(ui.isDirty()){
        			ui.setDirty(false);
        		}
        		for(ITableEditor editor:tableFolder.getEditors()){
        			BindedTableViewer btv=editor.getViewer();
        			if(btv != null && btv.getModel().isDirty()){
        				btv.getModel().setDirty(false);
        			}
        		}
            	
            }
    	}
    }
    
    //检查当前活动Editor
    public static void checkSave(BindedTableViewer btv){
    	if(btv == null || ! btv.getModel().isDirty())
    		return ;
        if (MessageDialog.openConfirm(Display.getCurrent().getActiveShell(),"提示", "已被修改,是否保存?")) {
			try {
				if (btv != null && btv.getModel().isDirty()) {
					IDataManager idm = DMFactory.getDataManager(btv.getModel().createRow().getClass());
					idm.createList(btv.getModel().getRows(),btv.getModel().getChunkId());
				}
			} catch (DataException e) {
				e.printStackTrace();
			}
		}
		btv.getModel().setDirty(false);
	}
   
    // 显示某天的记录
    public static void showWork(UiCore parent,String day){
        if(parent.getWorkDay().equals(day) && !parent.isMulti())
            return;
        parent.checkSave();
        parent.setMulti(false);
        parent.setDirty(false);
        parent.setWorkDay(day);
        try {
			parent.setData((WorkList) parent.getDataManager().readData(parent.getWorkDay()));
		} catch (DataException e) {
			e.printStackTrace();
		}
        parent.setMyStatus(parent.getWorkDay());
        syncCalendar(day,parent.getCalendar());
    }

    //显示某段的记录
    public static void showChunk(UiCore parent,String id){
    	BindedTableViewer btv=getActiveTableEditor().getViewer();
    	IBindedTableModel model=btv.getModel();
        if(model.getChunkId().equals(id) && model.isEditable())
            return;
        UiUtil.checkSave(btv);
        model.setEditable(true);
        model.setDirty(false);
        model.setChunkId(id);
        try {
			model.getRows().clear();
			model.getRows().addAll(DMFactory.getDataManager(getActiveTableEditor().getEntityClass()).readList(id));
			btv.refresh(true);
		} catch (DataException e) {
			e.printStackTrace();
		}
        parent.setMyStatus(id);
        try {
			String date = StringUtil.getDefaultDateFormat().format(StringUtil.getDefaultWeekFormat().parse(id));
			//修改跨年有时计算第一周不准的bug,以每年第1天所在的周为第1周
			if(id.endsWith("01"))
				date= id+"01";
			syncCalendar(date,parent.getCalendar());
		} catch (ParseException e) {
			e.printStackTrace();
		}
    }
    
	public static void syncCalendar(String value, SWTCalendar calendar){
		try {
			Calendar date1 = Calendar.getInstance();
			date1.setTime(StringUtil.getDefaultDateFormat().parse(value));
			calendar.setCalendar(date1);
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

	//给控件赋值 levin 20060127
	private static void synTextCellValue(final TableCursor cursor, final Text cellEdit) {
		TableItem row = cursor.getRow();
		int column = cursor.getColumn();
		TableColumn tc=((Table)cursor.getParent()).getColumn(column);
		row.setText(column, cellEdit.getText());
		cellEdit.dispose();
		//给工作时间赋值 gzsj=jssj-kssj-ddsj
		if(tc.getData().equals("kssj")){
			synGzsj(row, column+1);
		}
		if (tc.getData().equals("jssj")){
			synGzsj(row, column);
		}
		if (tc.getData().equals("ddsj")){
			synGzsj(row,column -1);
		}
	}

	//给工作时间赋值 gzsj=jssj-kssj-ddsj
	private static void synGzsj(TableItem row, int column) {
		if(TjUtil.convertSj(row.getText(column-1)) >0 && TjUtil.convertSj(row.getText(column)) > 0)
			row.setText(column+2,String.valueOf(TjUtil.convertSj(row.getText(column)) - TjUtil.convertSj(row.getText(column-1))-StringUtil.parseInt(row.getText(column+1))));
	}
	
	//取当前的操作视图
	public static ITableEditor getActiveTableEditor(){
		return tableFolder.getActiveEditor();
	}

	/*用TableCursor进行Table导航时处理的编辑事件*/
    private static void adapterEvent(UiCore uc, final ControlEditor editor) {
    	TableCursor cursor=uc.getTableCursor();
        int i = cursor.getColumn();
        TableColumn tc=((Table)cursor.getParent()).getColumn(i);
        //不允许编辑的列
        if (uc.isMulti() || tc.getData().equals("rq") || tc.getData().equals("wid"))
            return;
        //判断采用text还是combo
        if (tc.getData().equals("gzfl") || tc.getData().equals("xmz") || tc.getData().equals("plan")) {
            final List cellEdit = new List(cursor, SWT.SINGLE | SWT.V_SCROLL);
            cellEdit.setFont(cursor.getParent().getFont());
            if(tc.getData().equals("gzfl"))
            	cellEdit.setItems(ConfigHelper.getListGzfl());
            else if(tc.getData().equals("xmz"))
            	cellEdit.setItems(ConfigHelper.getListXmz());
            else if(tc.getData().equals("plan"))
            	cellEdit.setItems(getPlans(uc.getWorkDay()));
            //在向上向下时同时选定数据
            cellEdit.addSelectionListener(new SelectionAdapter() {
                public void widgetSelected(SelectionEvent e) {
                    List list = (List) e.getSource();
                    list.setSelection(list.getSelection());
                }
            });
            //在点击向上向下箭头时同时选定数据
            cellEdit.getVerticalBar().addSelectionListener(new SelectionAdapter() {
                public void widgetSelected(SelectionEvent e) {
                    ScrollBar sb = (ScrollBar) e.getSource();
                    ((List) sb.getParent()).setSelection(sb.getSelection());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -