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

📄 gfmprogdictionarycomposite.java

📁 BPO作业管理系统DMP的插件
💻 JAVA
字号:
package com.cmspad.dmp.bundles.gfm.widget;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.util.LinkedHashMap;import java.util.Map;import org.eclipse.swt.SWT;import org.eclipse.swt.custom.TableEditor;import org.eclipse.swt.events.ControlAdapter;import org.eclipse.swt.events.ControlEvent;import org.eclipse.swt.events.SelectionAdapter;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.graphics.Point;import org.eclipse.swt.graphics.Rectangle;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.layout.GridLayout;import org.eclipse.swt.widgets.Button;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Event;import org.eclipse.swt.widgets.FileDialog;import org.eclipse.swt.widgets.Label;import org.eclipse.swt.widgets.Listener;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 com.cmspad.dmp.DMPBundle;import com.cmspad.dmp.DMPPreferencesUI;import com.cmspad.dmp.bundles.gfm.GFMActivator;import com.cmspad.dmp.bundles.gfm.GFMProgDictionary;import com.cmspad.dmp.util.DMPUtil;public class GFMProgDictionaryComposite extends DMPPreferencesUI {	private Text vText;		private Button applyButton;		private Button resetButton;		private Text kText;	private Table data;	public GFMProgDictionaryComposite(Composite parent, long uid) {		super(parent, SWT.NONE);		final GridLayout gridLayout = new GridLayout();		gridLayout.marginHeight = 0;		gridLayout.marginWidth = 0;		gridLayout.numColumns = 6;		setLayout(gridLayout);		final Label label = new Label(this, SWT.NONE);		label.setText("名称");		kText = new Text(this, SWT.BORDER);		final GridData gd_kText = new GridData(SWT.FILL, SWT.CENTER, true, false);		kText.setLayoutData(gd_kText);		final Label label_1 = new Label(this, SWT.NONE);		label_1.setText("程序");		vText = new Text(this, SWT.BORDER);		final GridData gd_vText = new GridData(SWT.FILL, SWT.CENTER, true, false);		vText.setLayoutData(gd_vText);		final Button button_3 = new Button(this, SWT.NONE);		button_3.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);				dialog.setText("选择应用程序");				dialog.setFilterNames(new String[]{"应用程序"});				dialog.setFilterExtensions(new String[]{"*.exe"});				String path = dialog.open();				if(path != null){					vText.setText(path);					if(kText.getText().length() == 0){						File f = new File(path);						String fn = f.getName();						kText.setText(fn.substring(0, fn.length() - 4));					}				}			}		});		button_3.setText("...");		final Button button_4 = new Button(this, SWT.NONE);		button_4.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				String k = kText.getText();				String v = vText.getText();				if (k.length() > 0 && v.length() > 0) {					TableItem item = new TableItem(data, SWT.NONE);					item.setText(new String[]{k, v.length() > 0?v:k});					data.setTopIndex(data.getItemCount() - 1);					kText.setText("");					vText.setText("");					resetButton.setEnabled(true);					applyButton.setEnabled(true);				}else{					if(k.length() < 1){						DMPUtil.error("错误", "请输入名称", getShell());						kText.setFocus();					}else if(v.length() < 1){						DMPUtil.error("错误", "请选择程序", getShell());						vText.setFocus();					}				}			}		});		button_4.setLayoutData(new GridData(80, SWT.DEFAULT));		button_4.setText("添加");		data = new Table(this, SWT.FULL_SELECTION | SWT.MULTI | SWT.BORDER);		data.setLinesVisible(true);		data.setHeaderVisible(true);		data.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 5, 3));		final TableColumn column1 = new TableColumn(data, SWT.NONE);		column1.setText("名称");				final TableColumn column2 = new TableColumn(data, SWT.NONE);		column2.setText("程序");				// 自动改变字段长度		addControlListener(new ControlAdapter() {			public void controlResized(ControlEvent e) {				Rectangle area = getClientArea();				Point size = data.computeSize(SWT.DEFAULT, SWT.DEFAULT);				ScrollBar vBar = data.getVerticalBar();				int width = area.width - data.computeTrim(0, 0, 0, 0).width - vBar.getSize().x - 75;				if (size.y > area.height + data.getHeaderHeight()) {					Point vBarSize = vBar.getSize();					width -= vBarSize.x;				}				int columnWidth = width / 2;				column1.setWidth(columnWidth);				column2.setWidth(columnWidth);			}		});				final Button button = new Button(this, SWT.NONE);		button.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				int[] indices = data.getSelectionIndices();				if(indices.length > 0){					TableItem[] items = new TableItem[indices.length];					StringBuffer text = new StringBuffer();					for (int i = 0, l = indices.length; i < l; i++) {						int index = indices[i];						TableItem item = data.getItem(index);						items[i] = item;						text.append(item.getText());						text.append("\n");					}					if (SWT.YES == DMPUtil.confirm("确认", "是否要删除下列程序?\n\n" + text.toString(), SWT.YES | SWT.NO)) {						for (TableItem item : items) {							item.dispose();						}												resetButton.setEnabled(true);						applyButton.setEnabled(true);					}				}			}		});		button.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));		button.setText("删除");		final Button button_1 = new Button(this, SWT.NONE);		button_1.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				importData();			}		});		button_1.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));		button_1.setText("导入");		final Button button_2 = new Button(this, SWT.NONE);		button_2.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				exportData();			}		});		button_2.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false));		button_2.setText("导出");		resetButton = new Button(this, SWT.NONE);		resetButton.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				refresh();			}		});		final GridData gd_resetButton = new GridData(SWT.RIGHT, SWT.CENTER, false, false, 5, 1);		gd_resetButton.widthHint = 80;		resetButton.setLayoutData(gd_resetButton);		resetButton.setText("重置");		applyButton = new Button(this, SWT.NONE);		applyButton.addSelectionListener(new SelectionAdapter() {			public void widgetSelected(final SelectionEvent e) {				apply();			}		});		final GridData gd_applyButton = new GridData(SWT.FILL, SWT.CENTER, false, false);		applyButton.setLayoutData(gd_applyButton);		applyButton.setText("应用");		// 在线编辑表格内容		final TableEditor editor = new TableEditor(data);		editor.horizontalAlignment = SWT.LEFT;		editor.grabHorizontal = true;		data.addListener(SWT.MouseDoubleClick, new Listener() {			public void handleEvent(Event event) {				Rectangle clientArea = data.getClientArea();				Point pt = new Point(event.x, event.y);				int index = data.getTopIndex();				while (index < data.getItemCount()) {					boolean visible = false;					final TableItem item = data.getItem(index);					for (int i = 0; i < data.getColumnCount(); i++) {						Rectangle rect = item.getBounds(i);						if (rect.contains(pt)) {							final int column = i;							final Text text = new Text(data, SWT.NONE);							Listener textListener = new Listener() {								public void handleEvent(final Event e) {									switch (e.type) {										case SWT.FocusOut:											String oldText = item.getText();											String newText = text.getText();											item.setText(column, newText);											if(!oldText.equals(newText)){												resetButton.setEnabled(true);												applyButton.setEnabled(true);											}											text.dispose();											break;										case SWT.Traverse:											switch (e.detail) {												case SWT.TRAVERSE_RETURN:													oldText = item.getText();													newText = text.getText();													item.setText(column, newText);													if(!oldText.equals(newText)){														resetButton.setEnabled(true);														applyButton.setEnabled(true);													}												case SWT.TRAVERSE_ESCAPE:													text.dispose();													e.doit = false;											}											break;									}								}							};							text.addListener(SWT.FocusOut, textListener);							text.addListener(SWT.Traverse, textListener);							editor.setEditor(text, item, i);							text.setText(item.getText(i));							text.selectAll();							text.setFocus();							return;						}						if (!visible && rect.intersects(clientArea)) {							visible = true;						}					}					if (!visible)						return;					index++;				}			}		});		//	}	public void refresh() {		data.removeAll();		for(String key: GFMProgDictionary.keys()){			String title = GFMProgDictionary.value(key);			TableItem item = new TableItem(data, SWT.NONE);			item.setText(new String[]{key, title});		}		resetButton.setEnabled(false);		applyButton.setEnabled(false);	}		@Override	protected void checkSubclass() {}	private void apply() {		Map<String, String> strings = new LinkedHashMap<String, String>();		for (TableItem item : data.getItems()) {			strings.put(item.getText(0), item.getText(1));		}				StringBuffer string = new StringBuffer();		for(String k: strings.keySet()){			String v = strings.get(k);			string.append(k);			string.append("=");			string.append(v);			string.append("\n");		}		DMPBundle.setPreference(GFMActivator.ID, GFMActivator.PREFS_PROG_DICTIONARY, string.length() > 0?string.substring(0, string.length() - 1):"");				resetButton.setEnabled(false);		applyButton.setEnabled(false);		GFMProgDictionary.refresh();	}	private void importData() {		Map<String, String> strings = new LinkedHashMap<String, String>();		for (TableItem item : data.getItems()) {			strings.put(item.getText(0), item.getText(1));		}		data.removeAll();		FileDialog dialog = new FileDialog(getShell(), SWT.OPEN);		dialog.setText("请选择导入的文本文件(UTF-8编码)");		String path = dialog.open();		if (path != null) {			try {				BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));				for (String line = reader.readLine(); line != null; line = reader.readLine()) {					if (line.length() == 0) {						continue;					}					String[] ts = DMPUtil.split(line, '=');					strings.put(ts[0], ts.length > 1?ts[1]:ts[0]);				}				reader.close();			} catch (IOException e) {				DMPUtil.error("错误", "无法导入数据字典:" + e.getLocalizedMessage());			}		}		for (String k : strings.keySet()) {			String v = strings.get(k);			TableItem item = new TableItem(data, SWT.NONE);			item.setText(new String[]{k, v});		}				resetButton.setEnabled(true);		applyButton.setEnabled(true);	}	private void exportData() {		Map<String, String> strings = new LinkedHashMap<String, String>();		for (TableItem item : data.getItems()) {			strings.put(item.getText(0), item.getText(1));		}		FileDialog dialog = new FileDialog(getShell(), SWT.SAVE);		dialog.setText("请选择导出的文本文件(UTF-8编码)");		String path = dialog.open();		if (path != null) {			try {				PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(path), "UTF-8"));				for (String k : strings.keySet()) {					String v = strings.get(k);					writer.print(k);					writer.print("=");					writer.println(v);				}				writer.flush();				writer.close();			} catch (IOException e) {				DMPUtil.error("错误", "无法导出数据字典:" + e.getLocalizedMessage());			}		}	}}

⌨️ 快捷键说明

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