package org.insightech.er.editor.view.dialog.search;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.commands.CompoundCommand;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
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.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TabFolder;
import org.eclipse.swt.widgets.TabItem;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.IContributedContentsView;
import org.eclipse.ui.views.contentoutline.ContentOutline;
import org.insightech.er.ResourceString;
import org.insightech.er.editor.ERDiagramEditor;
import org.insightech.er.editor.controller.command.common.ReplaceCommand;
import org.insightech.er.editor.controller.editpart.outline.ERDiagramOutlineEditPartFactory;
import org.insightech.er.editor.model.ERDiagram;
import org.insightech.er.editor.model.diagram_contents.element.node.table.ERTable;
import org.insightech.er.editor.model.search.ReplaceManager;
import org.insightech.er.editor.model.search.SearchManager;
import org.insightech.er.editor.model.search.SearchResult;
import org.insightech.er.editor.model.search.SearchResultRow;
public class SearchDialog extends Dialog {
public static final int REPLACE_ID = 100;
public static final int SEARCH_ALL_ID = 101;
public static final int SEARCH_NEXT_ID = 102;
private Button allCheckBox;
// �P��
private Button wordCheckBox;
private Button physicalWordNameCheckBox;
private Button logicalWordNameCheckBox;
private Button wordTypeCheckBox;
private Button wordLengthCheckBox;
private Button wordDecimalCheckBox;
private Button wordDescriptionCheckBox;
// �e�[�u��
private Button tableCheckBox;
private Button physicalTableNameCheckBox;
private Button logicalTableNameCheckBox;
private Button physicalColumnNameCheckBox;
private Button logicalColumnNameCheckBox;
private Button columnTypeCheckBox;
private Button columnLengthCheckBox;
private Button columnDecimalCheckBox;
private Button columnDefaultValueCheckBox;
private Button columnDescriptionCheckBox;
private Button columnGroupNameCheckBox;
// �O���[�v
private Button groupCheckBox;
private Button groupNameCheckBox;
private Button physicalGroupColumnNameCheckBox;
private Button logicalGroupColumnNameCheckBox;
private Button groupColumnTypeCheckBox;
private Button groupColumnLengthCheckBox;
private Button groupColumnDecimalCheckBox;
private Button groupColumnDefaultValueCheckBox;
private Button groupColumnDescriptionCheckBox;
// ���̑�
private Button modelPropertiesCheckBox;
private Button indexCheckBox;
private Button relationCheckBox;
private Button noteCheckBox;
// �����E�u����
private Combo keywordCombo;
private Combo replaceCombo;
// ��������
private Table resultTable;
private GraphicalViewer viewer;
private ERDiagram diagram;
private SearchManager searchManager;
private SearchResult searchResult;
private boolean all;
private TabFolder tabFolder;
public SearchDialog(Shell parentShell, GraphicalViewer viewer,
ERDiagramEditor erDiagramEditor, ERDiagram diagram) {
super(parentShell);
this.setShellStyle(SWT.CLOSE | SWT.MODELESS | SWT.BORDER | SWT.TITLE);
this.setBlockOnOpen(false);
this.viewer = viewer;
this.diagram = diagram;
allViewer = erDiagramEditor.getGraphicalViewer();
this.searchManager = new SearchManager(this.diagram);
}
/**
* {@inheritDoc}
*/
@Override
protected Control createDialogArea(Composite parent) {
this.getShell().setText(
ResourceString.getResourceString("dialog.title.search"));
Composite composite = null;
composite = (Composite) super.createDialogArea(parent);
composite.setLayout(new GridLayout());
this.initialize(composite);
return composite;
}
private void initialize(Composite parent) {
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
gridLayout.verticalSpacing = 15;
createKeywordCombo(parent);
createReplaceCombo(parent);
GridData gridData = new GridData();
gridData.horizontalAlignment = GridData.FILL;
gridData.horizontalSpan = 3;
gridData.grabExcessHorizontalSpace = true;
this.tabFolder = new TabFolder(parent, SWT.NONE);
this.tabFolder.setLayoutData(gridData);
createRegionGroup(this.tabFolder);
createResultGroup(this.tabFolder);
parent.setLayout(gridLayout);
this.selectAllCheckBox(true);
}
private void createRegionGroup(TabFolder tabFolder) {
TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
tabItem.setText(ResourceString.getResourceString("label.search.range"));
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 3;
Composite group = new Composite(tabFolder, SWT.NONE);
group.setLayout(gridLayout);
allCheckBox = new Button(group, SWT.CHECK);
allCheckBox.setText(ResourceString
.getResourceString("label.search.range.all"));
GridData allCheckBoxGridData = new GridData();
allCheckBoxGridData.horizontalAlignment = GridData.FILL;
allCheckBoxGridData.horizontalSpan = 3;
allCheckBoxGridData.grabExcessHorizontalSpace = true;
allCheckBox.setLayoutData(allCheckBoxGridData);
this.allCheckBox.addSelectionListener(new SelectionAdapter() {
/**
* {@inheritDoc}
*/
@Override
public void widgetSelected(SelectionEvent e) {
selectAllCheckBox(allCheckBox.getSelection());
}
});
wordCheckBox = new Button(group, SWT.CHECK);
wordCheckBox.setText(ResourceString
.getResourceString("label.search.range.word"));
this.wordCheckBox.addSelectionListener(new SelectionAdapter() {
/**
* {@inheritDoc}
*/
@Override
public void widgetSelected(SelectionEvent e) {
selectWordCheckBox(wordCheckBox.getSelection());
}
});
this.createWordCheckboxGroup(group);
tableCheckBox = new Button(group, SWT.CHECK);
tableCheckBox.setText(ResourceString
.getResourceString("label.search.range.table"));
this.tableCheckBox.addSelectionListener(new SelectionAdapter() {
/**
* {@inheritDoc}
*/
@Override
public void widgetSelected(SelectionEvent e) {
selectTableCheckBox(tableCheckBox.getSelection());
}
});
this.createTableCheckboxGroup(group);
groupCheckBox = new Button(group, SWT.CHECK);
groupCheckBox.setText(ResourceString
.getResourceString("label.search.range.group"));
this.groupCheckBox.addSelectionListener(new SelectionAdapter() {
/**
* {@inheritDoc}
*/
@Override
public void widgetSelected(SelectionEvent e) {
selectGroupCheckBox(groupCheckBox.getSelection());
}
});
this.createGroupCheckboxGroup(group);
modelPropertiesCheckBox = new Button(group, SWT.CHECK);
modelPropertiesCheckBox.setText(ResourceString
.getResourceString("label.search.range.model.property"));
indexCheckBox = new Button(group, SWT.CHECK);
indexCheckBox.setText(ResourceString
.getResourceString("label.search.range.index"));
relationCheckBox = new Button(group, SWT.CHECK);
relationCheckBox.setText(ResourceString
.getResourceString("label.search.range.relation"));
noteCheckBox = new Button(group, SWT.CHECK);
noteCheckBox.setText(ResourceString
.getResourceString("label.search.range.note"));
tabItem.setControl(group);
}
private void createWordCheckboxGroup(Composite parent) {
GridData gridData = new GridData();
gridData.horizontalSpan = 2;
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 4;
Group group = new Group(parent, SWT.NONE);
group.setLayout(gridLayout);
group.setLayoutData(gridData);
physicalWordNameCheckBox = new Button(group, SWT.CHECK);
physicalWordNameCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.28"));
logicalWordNameCheckBox = new Button(group, SWT.CHECK);
logicalWordNameCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.29"));
wordTypeCheckBox = new Button(group, SWT.CHECK);
wordTypeCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.30"));
wordLengthCheckBox = new Button(group, SWT.CHECK);
wordLengthCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.31"));
wordDecimalCheckBox = new Button(group, SWT.CHECK);
wordDecimalCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.32"));
wordDescriptionCheckBox = new Button(group, SWT.CHECK);
wordDescriptionCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.33"));
}
private void createTableCheckboxGroup(Composite parent) {
GridData gridData = new GridData();
gridData.horizontalSpan = 2;
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 4;
Group group = new Group(parent, SWT.NONE);
group.setLayout(gridLayout);
group.setLayoutData(gridData);
physicalTableNameCheckBox = new Button(group, SWT.CHECK);
physicalTableNameCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.11"));
logicalTableNameCheckBox = new Button(group, SWT.CHECK);
logicalTableNameCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.12"));
columnGroupNameCheckBox = new Button(group, SWT.CHECK);
columnGroupNameCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.20"));
new Label(group, SWT.NONE);
physicalColumnNameCheckBox = new Button(group, SWT.CHECK);
physicalColumnNameCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.13"));
logicalColumnNameCheckBox = new Button(group, SWT.CHECK);
logicalColumnNameCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.14"));
columnTypeCheckBox = new Button(group, SWT.CHECK);
columnTypeCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.15"));
columnLengthCheckBox = new Button(group, SWT.CHECK);
columnLengthCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.16"));
columnDecimalCheckBox = new Button(group, SWT.CHECK);
columnDecimalCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.17"));
columnDefaultValueCheckBox = new Button(group, SWT.CHECK);
columnDefaultValueCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.18"));
columnDescriptionCheckBox = new Button(group, SWT.CHECK);
columnDescriptionCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.19"));
}
private void createGroupCheckboxGroup(Composite parent) {
GridData gridData = new GridData();
gridData.horizontalSpan = 2;
GridLayout gridLayout = new GridLayout();
gridLayout.numColumns = 4;
Group group = new Group(parent, SWT.NONE);
group.setLayoutData(gridData);
group.setLayout(gridLayout);
groupNameCheckBox = new Button(group, SWT.CHECK);
groupNameCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.20"));
new Label(group, SWT.NONE);
new Label(group, SWT.NONE);
new Label(group, SWT.NONE);
physicalGroupColumnNameCheckBox = new Button(group, SWT.CHECK);
physicalGroupColumnNameCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.13"));
logicalGroupColumnNameCheckBox = new Button(group, SWT.CHECK);
logicalGroupColumnNameCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.14"));
groupColumnTypeCheckBox = new Button(group, SWT.CHECK);
groupColumnTypeCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.15"));
groupColumnLengthCheckBox = new Button(group, SWT.CHECK);
groupColumnLengthCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.16"));
groupColumnDecimalCheckBox = new Button(group, SWT.CHECK);
groupColumnDecimalCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.17"));
groupColumnDefaultValueCheckBox = new Button(group, SWT.CHECK);
groupColumnDefaultValueCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.18"));
groupColumnDescriptionCheckBox = new Button(group, SWT.CHECK);
groupColumnDescriptionCheckBox.setText(ResourceString
.getResourceString("search.result.row.name.19"));
}
private void selectAllCheckBox(boolean checked) {
allCheckBox.setSelection(checked);
this.selectWordCheckBox(checked);
wordCheckBox.setEnabled(!checked);
this.selectTableCheckBox(checked);
tableCheckBox.setEnabled(!checked);
modelPropertiesCheckBox.setSelection(checked);
modelPropertiesCheckBox.setEnabled(!checked);
indexCheckBox.setSelection(checked);
indexCheckBox.setEnabled(!checked);
relationCheckBox.setSelection(checked);
relationCheckBox.setEnabled(!checked);
noteCheckBox.setSelection(checked);
noteCheckBox.setEnabled(!checked);
this.selectGroupCheckBox(checked);
groupCheckBox.setEnabled(!checked);
}
private void selectWordCheckBox(boolean checked) {
wordCheckBox.setSelection(checked);
physicalWordNameCheckBox.setSelection(checked);
logicalWordNameCheckBox.setSelection(checked);
wordTypeCheckBox.setSelection(checked);
wordLengthCheckBox.setSelection(checked);
wordDecimalCheckBox.setSelection(checked);
wordDescriptionCheckBox.setSelection(checked);
physicalWordNameCheckBox.setEnabled(!checked);
logicalWordNameCheckBox.setEnabled(!checked);
wordTypeCheckBox.setEnabled(!checked);
wordLengthCheckBox.setEnabled(!checked);
wordDecimalCheckBox.setEnabled(!checked);
wordDescriptionCheckBox.setEnabled(!checked);
}
private void selectTableCheckBox(boolean checked) {
tableCheckBox.setSelection(checked);
physicalTableNameCheckBox.setSelection(checked);
logicalTableNameCheckBox.setSelection(checked);
physicalColumnNameCheckBox.setSelection(checked);
logicalColumnNameCheckBox.setSelection(checked);
columnTypeCheckBox.setSelection(checked);
columnLengthCheckBox.setSelection(checked);
columnDecimalCheckBox.setSelection(checked);
columnDefaultValueCheckBox.setSelection(checked);
columnDescriptionCheckBox.setSelection(checked);
columnGroupNameCheckBox.setSelection(checked);
physicalTableNameCheckBox.setEnabled(!checked);
logicalTableNameCheckBox.setEnabled(!checked);
physicalColumnNameCheckBox.setEnabled(!checked);
logicalColumnNameCheckBox.setEnabled(!checked);
columnTypeCheckBox.setEnabled(!checked);
columnLengthCheckBox.setEnabled(!checked);
columnDecimalCheckBox.setEnabled(!checked);
columnDefaultValueCheckBox.setEnabled(!checked);
columnDescriptionCheckBox.setEnabled(!checked);
columnGroupNameCheckBox.setEnabled(!checked);
}
private void selectGroupCheckBox(boolean checked) {
groupCheckBox.setSelection(checked);
groupNameCheckBox.setSelection(checked);
physicalGroupColumnNameCheckBox.setSelection(checked);
logicalGroupColumnNameCheckBox.setSelection(checked);
groupColumnTypeCheckBox.setSelection(checked);
groupColumnLengthCheckBox.setSelection(checked);
groupColumnDecimalCheckBox.setSelection(checked);
groupColumnDefaultValueCheckBox.setSelection(checked);
groupColumnDescriptionCheckBox.setSelection(checked);
groupNameCheckBox.setEnabled(!checked);
physicalGroupColumnNameCheckBox.setEnabled(!checked);
logicalGroupColumnNameCheckBox.setEnabled(!checked);
groupColumnTypeCheckBox.setEnabled(!checked);
groupColumnLengthCheckBox.setEnabled(!checked);
groupColumnDecimalCheckBox.setEnabled(!checked);
groupColumnDefaultValueCheckBox.setEnabled(!checked);
groupColumnDescriptionCheckBox.setEnabled(!checked);
}
private void createKeywordCombo(Composite parent) {
Label label = new Label(parent, SWT.NONE);
label.setText(ResourceString.getResourceString("label.search.keyword"));
GridData fillerGridData = new GridData();
fillerGridData.widthHint = 10;
label = new Label(parent, SWT.NONE);
label.setText("");
label.setLayoutData(fillerGridData);
GridData gridData = new GridData();
gridData.widthHint = 200;
keywordCombo = new Combo(parent, SWT.NONE);
keywordCombo.setLayoutData(gridData);
keywordCombo.setVisibleItemCount(20);
this.initKeywordCombo();
}
private void createReplaceCombo(Composite parent) {
Label label = new Label(parent, SWT.NONE);
label.setText(ResourceString.getResourceString("label.search.replace.word"));
GridData fillerGridData = new GridData();
fillerGridData.widthHint = 10;
label = new Label(parent, SWT.NONE);
label.setText("");
label.setLayoutData(fillerGridData);
GridData gridData = new GridData();
gridData.widthHint = 200;
replaceCombo = new Combo(parent, SWT.NONE);
replaceCombo.setLayoutData(gridData);
replaceCombo.setVisibleItemCount(20);
this.initReplaceWordCombo();
}
private void initKeywordCombo() {
this.keywordCombo.removeAll();
for (String str : SearchManager.getKeywordList()) {
this.keywordCombo.add(str);
}
}
private void initReplaceWordCombo() {
this.replaceCombo.removeAll();
for (String str : ReplaceManager.getReplaceWordList()) {
this.replaceCombo.add(str);
}
}
private SearchResultRow searchResultRow;
private GraphicalViewer allViewer;
private void createResultGroup(TabFolder tabFolder) {
TabItem tabItem = new TabItem(tabFolder, SWT.NONE);
tabItem.setText(ResourceString.getResourceString("label.search.result"));
GridLayout layout = new GridLayout();
layout.numColumns = 4;
Composite resultGroup = new Composite(tabFolder, SWT.NONE);
resultGroup.setLayout(layout);
GridData gridData = new GridData();
gridData.widthHint = -1;
gridData.grabExcessVerticalSpace = true;
gridData.verticalAlignment = SWT.FILL;
gridData.horizontalSpan = 4;
resultTable = new Table(resultGroup, SWT.BORDER | SWT.FULL_SELECTION
| SWT.MULTI);
resultTable.setHeaderVisible(true);
resultTable.setLayoutData(gridData);
resultTable.setLinesVisible(true);
this.resultTable.addSelectionListener(new SelectionAdapter() {
/**
* {@inheritDoc}
*/
@Override
public void widgetSelected(SelectionEvent e) {
int index = resultTable.getSelectionIndex();
searchResultRow = searchResult.getRows().get(index);
Object object = searchResultRow.getTargetNode();
if (object != null) {
focus(object);
}
}
});
this.resultTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseDoubleClick(MouseEvent e) {
System.out.println("double");
if (searchResultRow != null) {
close();
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
ERTable table = null;
if (searchResultRow.getTargetNode() instanceof ERTable) {
table = (ERTable) searchResultRow.getTargetNode();
}
if (table != null) {
try {
IViewPart view = page.showView("org.eclipse.ui.views.ContentOutline");
System.out.println(view);
ContentOutline outlineView = (ContentOutline) view;
outlineView.getSelection();
EditPart editpart = ERDiagramOutlineEditPartFactory.tableParts.get(table.getLogicalName());
ISelection selection = new StructuredSelection(editpart);
outlineView.setSelection(selection);
IContributedContentsView v = (IContributedContentsView) outlineView.getAdapter(IContributedContentsView.class);
IWorkbenchPart contributingPart = v.getContributingPart();
System.out.println(contributingPart);
} catch (PartInitException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
// for (ERTable table : diagram.getDiagramContents().getContents().getTableSet()) {
// ERTable copyTable = table.copyData();
//
// TableDialog dialog = new TableDialog(PlatformUI.getWorkbench()
// .getActiveWorkbenchWindow().getShell(), viewer,
// copyTable, diagram.getDiagramContents().getGroups());
//
// if (dialog.open() == IDialogConstants.OK_ID) {
// CompoundCommand command = ERTableEditPart.createChangeTablePropertyCommand(diagram,
// table, copyTable);
//
// viewer.getEditDomain().getCommandStack().execute(command.unwrap());
// }
}
}
}
});
TableColumn tableColumn0 = new TableColumn(resultTable, SWT.LEFT);
tableColumn0.setWidth(250);
tableColumn0.setText(ResourceString
.getResourceString("label.search.result.table.path"));
tableColumn0.addSelectionListener(new SearchResultSortListener(
SearchResult.SORT_TYPE_PATH));
TableColumn tableColumn1 = new TableColumn(resultTable, SWT.LEFT);
tableColumn1.setWidth(100);
tableColumn1.setText(ResourceString
.getResourceString("label.search.result.table.type"));
tableColumn1.addSelectionListener(new SearchResultSortListener(
SearchResult.SORT_TYPE_TYPE));
TableColumn tableColumn2 = new TableColumn(resultTable, SWT.LEFT);
tableColumn2.setWidth(100);
tableColumn2.setText(ResourceString
.getResourceString("label.search.result.table.name"));
tableColumn2.addSelectionListener(new SearchResultSortListener(
SearchResult.SORT_TYPE_NAME));
TableColumn tableColumn3 = new TableColumn(resultTable, SWT.LEFT);
tableColumn3.setWidth(200);
tableColumn3.setText(ResourceString
.getResourceString("label.search.result.table.value"));
tableColumn3.addSelectionListener(new SearchResultSortListener(
SearchResult.SORT_TYPE_VALUE));
tabItem.setControl(resultGroup);
}
/**
* {@inheritDoc}
*/
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, REPLACE_ID, ResourceString
.getResourceString("label.search.replace.button"), false);
createButton(parent, SEARCH_ALL_ID, ResourceString
.getResourceString("label.search.all.button"), false);
createButton(parent, SEARCH_NEXT_ID, ResourceString
.getResourceString("label.search.next.button"), true);
createButton(parent, IDialogConstants.CLOSE_ID,
IDialogConstants.CLOSE_LABEL, false);
}
/**
* {@inheritDoc}
*/
@Override
protected void buttonPressed(int buttonId) {
if (buttonId == IDialogConstants.CLOSE_ID) {
this.setReturnCode(buttonId);
this.close();
} else if (buttonId == SEARCH_NEXT_ID || buttonId == SEARCH_ALL_ID) {
this.tabFolder.setSelection(1);
this.all = false;
if (buttonId == SEARCH_ALL_ID) {
this.all = true;
}
String keyword = this.keywordCombo.getText();
this.searchResult = this.searchManager.search(keyword, this.all,
this.physicalWordNameCheckBox.getSelection(),
this.logicalWordNameCheckBox.getSelection(),
this.wordTypeCheckBox.getSelection(),
this.wordLengthCheckBox.getSelection(),
this.wordDecimalCheckBox.getSelection(),
this.wordDescriptionCheckBox.getSelection(),
this.physicalTableNameCheckBox.getSelection(),
this.logicalTableNameCheckBox.getSelection(),
this.physicalColumnNameCheckBox.getSelection(),
this.logicalColumnNameCheckBox.getSelection(),
this.columnTypeCheckBox.getSelection(),
this.columnLengthCheckBox.getSelection(),
this.columnDecimalCheckBox.getSelection(),
this.columnDefaultValueCheckBox.getSelection(),
this.columnDescriptionCheckBox.getSelection(),
this.columnGroupNameCheckBox.getSelection(),
this.indexCheckBox.getSelection(), this.noteCheckBox
.getSelection(), this.modelPropertiesCheckBox
.getSelection(), this.relationCheckBox
.getSelection(), this.groupNameCheckBox
.getSelection(),
this.physicalGroupColumnNameCheckBox.getSelection(),
this.logicalGroupColumnNameCheckBox.getSelection(),
this.groupColumnTypeCheckBox.getSelection(),
this.groupColumnLengthCheckBox.getSelection(),
this.groupColumnDecimalCheckBox.getSelection(),
this.groupColumnDefaultValueCheckBox.getSelection(),
this.groupColumnDescriptionCheckBox.getSelection());
this.showSearchResult();
this.initKeywordCombo();
this.keywordCombo.setText(keyword);
return;
} else if (buttonId == REPLACE_ID) {
this.tabFolder.setSelection(1);
List<SearchResultRow> replaceRows = getReplaceRows();
if (replaceRows.isEmpty()) {
return;
}
CompoundCommand command = new CompoundCommand();
String keyword = this.keywordCombo.getText();
String replaceWord = this.replaceCombo.getText();
for (SearchResultRow row : replaceRows) {
ReplaceCommand replaceCommand = new ReplaceCommand(
this.diagram, row.getType(), row.getTarget(), keyword,
replaceWord);
command.add(replaceCommand);
}
this.viewer.getEditDomain().getCommandStack().execute(
command.unwrap());
this.searchResult = this.searchManager.research();
showSearchResult();
this.initKeywordCombo();
this.keywordCombo.setText(keyword);
this.initReplaceWordCombo();
this.replaceCombo.setText(replaceWord);
return;
}
super.buttonPressed(buttonId);
}
private void showSearchResult() {
if (this.searchResult != null) {
this.setResultRowData(this.searchResult.getRows());
Object object = this.searchResult.getResultObject();
if (object != null) {
this.focus(object);
}
} else {
this.resultTable.removeAll();
}
}
private void focus(Object object) {
EditPart editPart = (EditPart) viewer.getEditPartRegistry().get(object);
if (editPart != null) {
this.viewer.select(editPart);
this.viewer.reveal(editPart);
}
}
private void setResultRowData(List<SearchResultRow> rows) {
this.resultTable.removeAll();
for (SearchResultRow row : rows) {
String type = ResourceString.getResourceString("search.result.row.type."
+ row.getType());
String name = ResourceString.getResourceString("search.result.row.name."
+ row.getType());
TableItem tableItem = new TableItem(this.resultTable, SWT.NONE);
String path = row.getPath();
if (path == null) {
path = type;
}
if (row.getPath() != null) {
tableItem.setText(0, path);
}
tableItem.setText(1, type);
tableItem.setText(2, name);
tableItem.setText(3, row.getText());
}
}
private List<SearchResultRow> getReplaceRows() {
List<SearchResultRow> replaceRows = new ArrayList<SearchResultRow>();
if (this.searchResult == null) {
return replaceRows;
}
List<SearchResultRow> rows = this.searchResult.getRows();
if (rows == null) {
return replaceRows;
}
int[] indexes = this.resultTable.getSelectionIndices();
if (indexes != null) {
for (int i = 0; i < indexes.length; i++) {
replaceRows.add(rows.get(indexes[i]));
}
}
return replaceRows;
}
private class SearchResultSortListener extends SelectionAdapter {
private int sortType;
private SearchResultSortListener(int sortType) {
this.sortType = sortType;
}
/**
* {@inheritDoc}
*/
@Override
public void widgetSelected(SelectionEvent e) {
if (searchResult == null) {
return;
}
searchResult.sort(sortType);
showSearchResult();
}
}
}