📄 uiutil.java
字号:
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 + -