File path: /emf-2.4.1/src/org/eclipse/emf/common/ui/celleditor/ExtendedTableEditor.java | File path: /emf-2.4.1/src/org/eclipse/emf/common/ui/celleditor/ExtendedTableTreeEditor.java | |||
Method name: void mouseDown(MouseEvent)
|
Method name: void mouseDown(MouseEvent)
|
|||
Number of AST nodes: 37 | Number of AST nodes: 35 | |||
1 | editTableItem = null;↵ | |||
2 | editTableItemColumn = -1;↵ | |||
3 | // System.out.println("*down*");↵ | |||
4 | if (event.button == 1)↵ | 1 | if (event.button == 1)↵ | |
5 | {↵ | 2 | {↵ | |
6 | boolean wasActive = getEditor() != null && !getEditor().isDisposed();↵ | 3 | boolean wasActive = getEditor() != null && !getEditor().isDisposed();↵ | |
7 | Point point = new Point(event.x, event.y);↵ | 4 | Point point = new Point(event.x, event.y);↵ | |
8 | TableItem [] tableItems = table.getItems();↵ | 5 | TableItem [] tableItems = tableTree.getTable().getItems();↵ | |
9 | int columnCount = table.getColumnCount();↵ | 6 | int columnCount = tableTree.getTable().getColumnCount();↵ | |
10 | LOOP: for (int i = table.getTopIndex(); i < tableItems.length; ++i)↵ | 7 | LOOP: for (int i = tableTree.getTable().getTopIndex(); i < tableItems.length; ++i)↵ | |
11 | {↵ | 8 | {↵ | |
12 | for (int j = 0; j < columnCount; ++j)↵ | 9 | for (int j = 0; j < columnCount; ++j)↵ | |
13 | {↵ | 10 | {↵ | |
14 | Rectangle bounds = tableItems[i].getBounds(j);↵ | 11 | Rectangle bounds = tableItems[i].getBounds(j);↵ | |
15 | if (bounds.y > event.y)↵ | 12 | if (bounds.y > event.y)↵ | |
16 | {↵ | 13 | {↵ | |
17 | break LOOP;↵ | 14 | break LOOP;↵ | |
18 | }↵ | 15 | }↵ | |
19 | else if (bounds.contains(event.x, event.y))↵ | 16 | else if (bounds.contains(event.x, event.y))↵ | |
20 | {↵ | 17 | {↵ | |
21 | if (j != 0 || !tableItems[i].getImageBounds(0).contains(event.x, event.y))↵ | 18 | if (j != 0 || !tableItems[i].getImageBounds(0).contains(event.x, event.y))↵ | |
22 | {↵ | 19 | {↵ | |
23 | TableItem tableItem = tableItems[i];↵ | 20 | TableItem tableItem = tableItems[i];↵ | |
24 | if (tableItem == selectedTableItem || wasActive)↵ | 21 | if (tableItem == selectedTableItem || wasActive)↵ | |
25 | {↵ | 22 | {↵ | |
26 | if (tableItem != selectedTableItem)↵ | 23 | if (tableItem != selectedTableItem)↵ | |
27 | {↵ | 24 | {↵ | |
28 | table.setSelection(i);↵ | 25 | table.setSelection(i);↵ | |
29 | Event selectionEvent = new Event();↵ | 26 | Event selectionEvent = new Event();↵ | |
30 | selectionEvent.widget = table;↵ | 27 | selectionEvent.widget = table;↵ | |
31 | selectionEvent.item = tableItem;↵ | 28 | selectionEvent.item = tableItem;↵ | |
32 | table.notifyListeners(SWT.Selection, selectionEvent);↵ | 29 | table.notifyListeners(SWT.Selection, selectionEvent);↵ | |
33 | selectedTableItem = tableItem;↵ | 30 | selectedTableItem = tableItem;↵ | |
34 | }↵ | 31 | }↵ | |
35 | editTableItem = tableItems[i];↵ | 32 | editTableTreeItem = (TableTreeItem)tableItems[i].getData(ExtendedTableTreeViewer.ITEM_ID);↵ | |
36 | editTableItemColumn = j;↵ | 33 | editTableTreeItemColumn = j;↵ | |
37 | }↵ | 34 | }↵ | |
38 | else↵ | 35 | else↵ | |
39 | {↵ | 36 | {↵ | |
40 | TableItem mouseBasedTableItem = table.getItem(point);↵ | 37 | TableItem mouseBasedTableItem = table.getItem(point);↵ | |
41 | if (mouseBasedTableItem == null)↵ | 38 | if (mouseBasedTableItem == null)↵ | |
42 | {↵ | 39 | {↵ | |
43 | table.setSelection(i);↵ | 40 | table.setSelection(i);↵ | |
44 | Event selectionEvent = new Event();↵ | 41 | Event selectionEvent = new Event();↵ | |
45 | selectionEvent.widget = table;↵ | 42 | selectionEvent.widget = table;↵ | |
46 | selectionEvent.item = tableItem;↵ | 43 | selectionEvent.item = tableItem;↵ | |
47 | table.notifyListeners(SWT.Selection, selectionEvent);↵ | 44 | table.notifyListeners(SWT.Selection, selectionEvent);↵ | |
48 | selectedTableItem = tableItem;↵ | 45 | selectedTableItem = tableItem;↵ | |
49 | }↵ | 46 | }↵ | |
50 | }↵ | 47 | }↵ | |
51 | }↵ | 48 | }↵ | |
52 | break LOOP;↵ | 49 | break LOOP;↵ | |
53 | }↵ | 50 | }↵ | |
54 | }↵ | 51 | }↵ | |
55 | }↵ | 52 | }↵ | |
56 | if (editTableItem == null && wasActive)↵ | 53 | if (editTableTreeItem == null && wasActive)↵ | |
57 | {↵ | 54 | {↵ | |
58 | dismiss();↵ | 55 | dismiss();↵ | |
59 | }↵ | 56 | }↵ | |
60 | } | 57 |
| |
See real code fragment | See real code fragment |
Number of common nesting structure subtrees | 1 |
Number of refactorable cases | 0 |
Number of non-refactorable cases | 1 |
Time elapsed for finding largest common nesting structure subtrees (ms) | 2.4 |
Clones location | Clones are in different classes having the same super class |
Number of node comparisons | 211 |
Number of mapped statements | 34 |
Number of unmapped statements in the first code fragment | 2 |
Number of unmapped statements in the second code fragment | 0 |
Time elapsed for statement mapping (ms) | 33.7 |
Clone type | Type 3 |
ID | Statement | ID | Statement | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | editTableItem = null; |
| | |||||||||||||||||||
2 | editTableItemColumn = -1; |
| | |||||||||||||||||||
3 | if (event.button == 1) | 3 | if (event.button == 1) | |||||||||||||||||||
4 | boolean wasActive = getEditor() != null && !getEditor().isDisposed(); | 4 | boolean wasActive = getEditor() != null && !getEditor().isDisposed(); | |||||||||||||||||||
5 | Point point = new Point(event.x, event.y); | 5 | Point point = new Point(event.x, event.y); | |||||||||||||||||||
6 | TableItem[] tableItems = table.getItems(); |
| 6 | TableItem[] tableItems = tableTree.getTable().getItems(); | ||||||||||||||||||
7 | int columnCount = table.getColumnCount(); |
| 7 | int columnCount = tableTree.getTable().getColumnCount(); | ||||||||||||||||||
8 | for (int i = table.getTopIndex(); i < tableItems.length; ++i) |
| 8 | for (int i = tableTree.getTable().getTopIndex(); i < tableItems.length; ++i) | ||||||||||||||||||
9 | for (int j = 0; j < columnCount; ++j) | 9 | for (int j = 0; j < columnCount; ++j) | |||||||||||||||||||
10 | Rectangle bounds = tableItems[i].getBounds(j); | 10 | Rectangle bounds = tableItems[i].getBounds(j); | |||||||||||||||||||
11 | if (bounds.y > event.y) | 11 | if (bounds.y > event.y) | |||||||||||||||||||
12 | break LOOP; | 12 | break LOOP; | |||||||||||||||||||
13 | else if (bounds.contains(event.x, event.y)) | 13 | else if (bounds.contains(event.x, event.y)) | |||||||||||||||||||
14 | if (j != 0 || !tableItems[i].getImageBounds(0).contains(event.x, event.y)) | 14 | if (j != 0 || !tableItems[i].getImageBounds(0).contains(event.x, event.y)) | |||||||||||||||||||
15 | TableItem tableItem = tableItems[i]; | 15 | TableItem tableItem = tableItems[i]; | |||||||||||||||||||
16 | if (tableItem == selectedTableItem || wasActive) | 16 | if (tableItem == selectedTableItem || wasActive) | |||||||||||||||||||
17 | if (tableItem != selectedTableItem) | 17 | if (tableItem != selectedTableItem) | |||||||||||||||||||
18 | table.setSelection(i); | 18 | table.setSelection(i); | |||||||||||||||||||
19 | Event selectionEvent = new Event(); | 19 | Event selectionEvent = new Event(); | |||||||||||||||||||
20 | selectionEvent.widget = table; | 20 | selectionEvent.widget = table; | |||||||||||||||||||
21 | selectionEvent.item = tableItem; | 21 | selectionEvent.item = tableItem; | |||||||||||||||||||
22 | table.notifyListeners(SWT.Selection, selectionEvent); | 22 | table.notifyListeners(SWT.Selection, selectionEvent); | |||||||||||||||||||
23 | selectedTableItem = tableItem; | 23 | selectedTableItem = tableItem; | |||||||||||||||||||
24 | editTableItem = tableItems[i]; |
| 24 | editTableTreeItem = (TableTreeItem)tableItems[i].getData(ExtendedTableTreeViewer.ITEM_ID); | ||||||||||||||||||
25 | editTableItemColumn = j; |
| 25 | editTableTreeItemColumn = j; | ||||||||||||||||||
else | else | |||||||||||||||||||||
26 | TableItem mouseBasedTableItem = table.getItem(point); | 26 | TableItem mouseBasedTableItem = table.getItem(point); | |||||||||||||||||||
27 | if (mouseBasedTableItem == null) | 27 | if (mouseBasedTableItem == null) | |||||||||||||||||||
28 | table.setSelection(i); | 28 | table.setSelection(i); | |||||||||||||||||||
29 | Event selectionEvent = new Event(); | 29 | Event selectionEvent = new Event(); | |||||||||||||||||||
30 | selectionEvent.widget = table; | 30 | selectionEvent.widget = table; | |||||||||||||||||||
31 | selectionEvent.item = tableItem; | 31 | selectionEvent.item = tableItem; | |||||||||||||||||||
32 | table.notifyListeners(SWT.Selection, selectionEvent); | 32 | table.notifyListeners(SWT.Selection, selectionEvent); | |||||||||||||||||||
33 | selectedTableItem = tableItem; | 33 | selectedTableItem = tableItem; | |||||||||||||||||||
34 | break LOOP; | 34 | break LOOP; | |||||||||||||||||||
35 | if (editTableItem == null && wasActive) |
| 35 | if (editTableTreeItem == null && wasActive) | ||||||||||||||||||
36 | dismiss(); | 36 | dismiss(); |
Row | Violation |
---|---|
1 | Unmatched statement editTableItem=null; cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted |
2 | Unmatched statement editTableItemColumn=-1; cannot be moved before the extracted code, because it has control dependencies from statements that will be extracted |
3 | Expression tableItems[i] cannot be parameterized, because it has dependencies to/from statements that will be extracted |
4 | Expression (TableTreeItem)tableItems[i].getData(ExtendedTableTreeViewer.ITEM_ID) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
5 | The refactoring of the clones is infeasible, because classes org.eclipse.emf.common.ui.celleditor.ExtendedTableEditor and org.eclipse.emf.common.ui.celleditor.ExtendedTableTreeEditor do not have a common superclass |