Ignore:
Timestamp:
01/27/12 11:00:50 (13 years ago)
Author:
sherbold
Message:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/EventBenchConsole/src/de/ugoe/cs/eventbench/swt/EditSequenceDialog.java

    r287 r358  
    55import org.eclipse.swt.widgets.Dialog; 
    66import org.eclipse.swt.widgets.Display; 
     7import org.eclipse.swt.widgets.Listener; 
    78import org.eclipse.swt.widgets.MessageBox; 
    89import org.eclipse.swt.widgets.Shell; 
     
    1617import org.eclipse.swt.events.SelectionAdapter; 
    1718import org.eclipse.swt.events.SelectionEvent; 
     19import org.eclipse.swt.graphics.Point; 
    1820 
    1921import de.ugoe.cs.eventbench.data.Event; 
     
    2527        private TableColumn tblclmnEventType; 
    2628        private TableColumn tblclmnEventTarget; 
    27          
     29 
    2830        private java.util.List<Event<?>> sequence; 
    2931        private SortedSet<String> targets; 
     
    3133        /** 
    3234         * Create the dialog. 
     35         *  
    3336         * @param parent 
    3437         * @param style 
     
    6063         */ 
    6164        private void createContents() { 
    62                 shell = new Shell(getParent(), SWT.SHELL_TRIM | SWT.BORDER | SWT.APPLICATION_MODAL); 
     65                shell = new Shell(getParent(), SWT.SHELL_TRIM | SWT.BORDER 
     66                                | SWT.APPLICATION_MODAL); 
    6367                shell.setSize(450, 300); 
    6468                shell.setText(getText()); 
    6569                shell.setLayout(new GridLayout(3, false)); 
    66                  
     70 
    6771                table = new Table(shell, SWT.BORDER | SWT.FULL_SELECTION); 
    6872                table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1)); 
    6973                table.setHeaderVisible(true); 
    7074                table.setLinesVisible(true); 
    71                  
     75 
    7276                tblclmnEventType = new TableColumn(table, SWT.NONE); 
    7377                tblclmnEventType.setWidth(100); 
    7478                tblclmnEventType.setText("Event Type"); 
    75                  
     79 
    7680                tblclmnEventTarget = new TableColumn(table, SWT.NONE); 
    7781                tblclmnEventTarget.setWidth(100); 
    7882                tblclmnEventTarget.setText("Event Target"); 
    79                  
     83 
     84                // this listener makes the table entries multiline 
     85                Listener paintListener = new Listener() { 
     86                        public void handleEvent(org.eclipse.swt.widgets.Event event) { 
     87                                switch (event.type) { 
     88                                case SWT.MeasureItem: { 
     89                                        TableItem item = (TableItem) event.item; 
     90                                        String text = item.getText(event.index); 
     91                                        Point size = event.gc.textExtent(text); 
     92                                        event.width = size.x; 
     93                                        event.height = Math.max(event.height, size.y); 
     94                                        break; 
     95                                } 
     96                                case SWT.PaintItem: { 
     97                                        TableItem item = (TableItem) event.item; 
     98                                        String text = item.getText(event.index); 
     99                                        Point size = event.gc.textExtent(text); 
     100                                        int offset = event.index == 0 ? Math.max(0, 
     101                                                        (event.height - size.y) / 2) : 0; 
     102                                        event.gc.drawText(text, event.x, event.y + offset, true); 
     103                                        break; 
     104                                } 
     105                                case SWT.EraseItem: { 
     106                                        event.detail &= ~SWT.FOREGROUND; 
     107                                        break; 
     108                                } 
     109                                } 
     110                        } 
     111 
     112                }; 
     113                table.addListener(SWT.MeasureItem, paintListener); 
     114                table.addListener(SWT.PaintItem, paintListener); 
     115                table.addListener(SWT.EraseItem, paintListener); 
     116 
    80117                updateTableContents(); 
    81                  
     118 
    82119                Button btnInsertBefore = new Button(shell, SWT.NONE); 
    83120                btnInsertBefore.addSelectionListener(new SelectionAdapter() { 
     
    85122                        public void widgetSelected(SelectionEvent e) { 
    86123                                int index = table.getSelectionIndex(); 
    87                                 if( index==-1 ) { 
     124                                if (index == -1) { 
    88125                                        MessageBox messageBox = new MessageBox(shell, SWT.ERROR); 
    89126                                        messageBox.setMessage("No event selected!"); 
     
    96133                }); 
    97134                btnInsertBefore.setText("Insert Before"); 
    98                  
     135 
    99136                Button btnInsertAfter = new Button(shell, SWT.NONE); 
    100137                btnInsertAfter.addSelectionListener(new SelectionAdapter() { 
     
    102139                        public void widgetSelected(SelectionEvent e) { 
    103140                                int index = table.getSelectionIndex(); 
    104                                 if( index==-1 ) { 
     141                                if (index == -1) { 
    105142                                        MessageBox messageBox = new MessageBox(shell, SWT.ERROR); 
    106143                                        messageBox.setMessage("No event selected!"); 
     
    108145                                        messageBox.open(); 
    109146                                } else { 
    110                                         openInsertDialog(index+1); 
     147                                        openInsertDialog(index + 1); 
    111148                                } 
    112149                        } 
    113150                }); 
    114151                btnInsertAfter.setText("Insert After"); 
    115                  
     152 
    116153                Button btnClose = new Button(shell, SWT.NONE); 
    117154                btnClose.addSelectionListener(new SelectionAdapter() { 
     
    124161 
    125162        } 
    126          
     163 
    127164        private void updateTableContents() { 
    128165                table.removeAll(); 
    129                 for( Event<?> event : sequence ) { 
     166                for (Event<?> event : sequence) { 
    130167                        TableItem tableItem = new TableItem(table, SWT.NONE); 
    131                         tableItem.setText(new String[]{event.getType(),event.getTarget()}); 
     168                        String target = event.getTarget(); 
     169                        if (target != null) { 
     170                                // the target is split into multiple lines, as one line may 
     171                                // only  be 259 characters in tables with Windows 
     172                                target = target.replace("].", "].\n"); 
     173                        } 
     174                        tableItem.setText(new String[] { event.getType(), target }); 
     175                } 
     176                for (int i = 0; i < table.getColumnCount(); i++) { 
     177                        table.getColumn(i).pack(); 
    132178                } 
    133179        } 
    134          
     180 
    135181        private void openInsertDialog(int position) { 
    136                 InsertAssertionDialog insertDialog = new InsertAssertionDialog(shell, SWT.NONE, targets); 
     182                InsertAssertionDialog insertDialog = new InsertAssertionDialog(shell, 
     183                                SWT.NONE, targets); 
    137184                Event<?> event = insertDialog.open(); 
    138                 if( event!=null ) { 
     185                if (event != null) { 
    139186                        sequence.add(position, event); 
    140187                        updateTableContents(); 
Note: See TracChangeset for help on using the changeset viewer.