/** 编辑转换配置XML文件 ; */ public void editConfigXml() { ISelection selection = tableViewer.getSelection(); if (!selection.isEmpty() && selection != null && selection instanceof IStructuredSelection) { IStructuredSelection structuredSelection = (IStructuredSelection) selection; @SuppressWarnings("unchecked") Iterator<String[]> iter = structuredSelection.iterator(); String convertXml = iter.next()[1]; AddOrEditXmlConvertConfigDialog dialog = new AddOrEditXmlConvertConfigDialog(getShell(), false); dialog.create(); String convertXmlLoaction = root.getLocation() .append(ADConstants.AD_xmlConverterConfigFolder) .append(convertXml) .toOSString(); if (dialog.setInitEditData(convertXmlLoaction)) { int result = dialog.open(); // 如果点击的是确定按钮,那么更新列表 if (result == IDialogConstants.OK_ID) { String curentConvertXMl = dialog.getCurentConverXML(); refreshTable(); setTableSelection(curentConvertXMl); } } } else { MessageDialog.openInformation( getShell(), Messages.getString("dialogs.XmlConverterConfigurationDialog.msgTitle"), Messages.getString("dialogs.XmlConverterConfigurationDialog.msg2")); } }
@Override protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText(Messages.getString("dialogs.XmlConverterConfigurationDialog.title")); }
@Override protected Control createDialogArea(Composite parent) { Composite tparent = (Composite) super.createDialogArea(parent); GridDataFactory.fillDefaults() .grab(true, true) .hint(400, 450) .minSize(400, 450) .applyTo(tparent); tableViewer = new TableViewer( tparent, SWT.FULL_SELECTION | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); table = tableViewer.getTable(); table.setLinesVisible(true); table.setHeaderVisible(true); GridDataFactory.fillDefaults().grab(true, true).applyTo(table); tableViewer.setLabelProvider(new TableViewerLabelProvider()); tableViewer.setContentProvider(new ArrayContentProvider()); String[] columnNames = new String[] { Messages.getString("dialogs.XmlConverterConfigurationDialog.columnNames1"), Messages.getString("dialogs.XmlConverterConfigurationDialog.columnNames2") }; int[] columnAlignments = new int[] {SWT.LEFT, SWT.LEFT}; for (int i = 0; i < columnNames.length; i++) { TableColumn tableColumn = new TableColumn(table, columnAlignments[i]); tableColumn.setText(columnNames[i]); tableColumn.setWidth(50); // 处理排序的问题 switch (i) { case 0: tableColumn.addSelectionListener( new SelectionAdapter() { boolean asc = true; // 升序 @Override public void widgetSelected(SelectionEvent e) { tableViewer.setSorter( asc ? XmlConvertOrder.index_ASC : XmlConvertOrder.index_DESC); asc = !asc; } }); break; case 1: tableColumn.addSelectionListener( new SelectionAdapter() { boolean asc = true; // 升序 @Override public void widgetSelected(SelectionEvent e) { tableViewer.setSorter( asc ? XmlConvertOrder.xmlName_ASC : XmlConvertOrder.xmlName_DESC); asc = !asc; } }); break; default: break; } } tableViewer.setInput(getXmlConfigFilesInfo()); // 让列表列宽动态变化 table.addListener( SWT.Resize, new Listener() { public void handleEvent(Event event) { final Table table = ((Table) event.widget); final TableColumn[] columns = table.getColumns(); event .widget .getDisplay() .syncExec( new Runnable() { public void run() { double[] columnWidths = new double[] {0.1, 0.85}; for (int i = 0; i < columns.length; i++) columns[i].setWidth((int) (table.getBounds().width * columnWidths[i])); } }); } }); tableViewer.addDoubleClickListener( new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { editConfigXml(); } }); return tparent; }
@Override protected Control createButtonBar(Composite parent) { Composite buttonCmp = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); layout.numColumns = 2; layout.makeColumnsEqualWidth = false; layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); buttonCmp.setLayout(layout); GridData data = new GridData(SWT.FILL, SWT.FILL, true, false); buttonCmp.setLayoutData(data); buttonCmp.setFont(parent.getFont()); Composite leftCmp = new Composite(buttonCmp, SWT.NONE); GridDataFactory.fillDefaults().grab(true, false).applyTo(leftCmp); GridLayoutFactory.fillDefaults() .extendedMargins(0, 0, 0, 0) .numColumns(3) .equalWidth(false) .applyTo(leftCmp); addBtn = createButton( leftCmp, IDialogConstants.CLIENT_ID, Messages.getString("dialogs.XmlConverterConfigurationDialog.addBtn"), false); editBtn = createButton( leftCmp, IDialogConstants.CLIENT_ID, Messages.getString("dialogs.XmlConverterConfigurationDialog.editBtn"), false); deleteBtn = createButton( leftCmp, IDialogConstants.CLIENT_ID, Messages.getString("dialogs.XmlConverterConfigurationDialog.deleteBtn"), false); Composite rightCmp = new Composite(buttonCmp, SWT.NONE); GridLayoutFactory.fillDefaults() .extendedMargins(0, 0, 0, 0) .numColumns(1) .equalWidth(false) .applyTo(rightCmp); analysisBtn = createButton( rightCmp, IDialogConstants.CLIENT_ID, Messages.getString("dialogs.XmlConverterConfigurationDialog.analysisBtn"), false); Label separatorLbl = new Label(buttonCmp, SWT.HORIZONTAL | SWT.SEPARATOR); GridDataFactory.fillDefaults().span(2, SWT.DEFAULT).applyTo(separatorLbl); createHelpToolItem(buttonCmp); Composite bottomCmp = new Composite(buttonCmp, SWT.NONE); GridDataFactory.fillDefaults() .grab(false, false) .align(SWT.RIGHT, SWT.CENTER) .applyTo(bottomCmp); GridLayoutFactory.fillDefaults().extendedMargins(0, 0, 0, 0).numColumns(1).applyTo(bottomCmp); createButton( bottomCmp, IDialogConstants.CANCEL_ID, Messages.getString("dialogs.XmlConverterConfigurationDialog.cancel"), true) .setFocus(); initListener(); return buttonCmp; }