updating SQL plugin with latest Quantum code
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.sql / src / net / sourceforge / phpdt / sql / view / TableView.java
index 97c351f..d0048a5 100644 (file)
@@ -1,7 +1,5 @@
 package net.sourceforge.phpdt.sql.view;
 
-import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin;
-
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IMenuListener;
 import org.eclipse.jface.action.IMenuManager;
@@ -30,410 +28,403 @@ import org.eclipse.ui.ISelectionListener;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.part.ViewPart;
 
+import net.sourceforge.phpdt.sql.Messages;
+import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin;
 import net.sourceforge.phpdt.sql.actions.CloseTableAction;
 import net.sourceforge.phpdt.sql.actions.RefreshTableAction;
 import net.sourceforge.phpdt.sql.sql.SQLResults;
 import net.sourceforge.phpdt.sql.sql.TableRow;
+import net.sourceforge.phpdt.sql.view.bookmark.BookmarkNode;
 import net.sourceforge.phpdt.sql.view.tableview.TableAdapter;
 import net.sourceforge.phpdt.sql.wizards.DeleteRowPage;
 import net.sourceforge.phpdt.sql.wizards.InsertRowPage;
-import net.sourceforge.phpdt.sql.wizards.PHPSelectRowPage;
 import net.sourceforge.phpdt.sql.wizards.SQLRowWizard;
 import net.sourceforge.phpdt.sql.wizards.SortFilterPage;
 import net.sourceforge.phpdt.sql.wizards.UpdateRowPage;
-import net.sourceforge.phpdt.sql.wizards.PHPSelectRowPage;
 
 public class TableView extends ViewPart implements ISelectionListener {
-  public static String TABLEVIEW_ID = "net.sourceforge.phpdt.sql.view.tableview";
-  private Clipboard clip;
-  private RefreshTableAction refreshTableAction;
-  private CloseTableAction closeTableAction;
-  private static TableView instance = null;
-  private TabFolder tabs;
-  private Composite parent;
-  public TableView() {
-    super();
-  }
-  public void setFocus() {
-  }
-  public static TableView getInstance() {
-    return instance;
-  }
-  public void closeCurrent() {
-    TabItem item = tabs.getItem(tabs.getSelectionIndex());
-    item.dispose();
-  }
-  public void refreshCurrent() {
-    TabItem item = tabs.getItem(tabs.getSelectionIndex());
-    TableAdapter adapter = (TableAdapter) item.getData();
-    String table = adapter.getTable();
-    if (table == null) {
-      loadTable(item, null, null, true, true);
-    } else {
-      loadTable(item, null, null, true, true);
-    }
-  }
-  public void loadQuery(SQLResults results) {
-    loadTable(null, null, results, true, false);
-  }
-  public void loadTable(String table) {
-    loadTable(null, table, null, false, true);
-  }
-  public void loadTable(
-    TabItem tabItem,
-    String entity,
-    SQLResults results,
-    boolean query,
-    boolean reload) {
-    TableAdapter adapter;
-    if (tabItem == null) {
-      tabItem = new TabItem(tabs, SWT.NONE);
-      if (query) {
-        adapter = TableAdapter.createFromQuery(results);
-      } else {
-        adapter = TableAdapter.createFromTable(entity);
-      }
-      tabItem.setData(adapter);
-    } else {
-      adapter = (TableAdapter) tabItem.getData();
-    }
-
-    final TableAdapter ta = adapter;
-
-    Composite main = new Composite(tabs, SWT.NONE);
-    GridLayout layout = new GridLayout(1, false);
-    layout.horizontalSpacing = 0;
-    layout.verticalSpacing = 0;
-    main.setLayout(layout);
-
-    // load up main
-    ToolBar toolbar = new ToolBar(main, SWT.HORIZONTAL);
-    final Table table = new Table(main, SWT.FULL_SELECTION | SWT.MULTI);
-    final Label label = new Label(main, SWT.NULL);
-
-    final Action copyAction = new Action() {
-      public void run() {
-        TableItem items[] = table.getSelection();
-        StringBuffer text = new StringBuffer();
-        for (int i = 0; i < items.length; i++) {
-          int columns = table.getColumnCount();
-          for (int col = 0; col < columns; col++) {
-            text.append(items[i].getText(col));
-            text.append('\t');
-          }
-          text.append('\n');
-        }
-        clip.setContents(
-          new Object[] { text.toString()},
-          new Transfer[] { TextTransfer.getInstance()});
-      }
-    };
-    final Action selectAllAction = new Action() {
-      public void run() {
-        table.selectAll();
-      }
-    };
-
-    // load toobar
-    ToolItem toolItem = new ToolItem(toolbar, SWT.PUSH);
-    toolItem.setImage(PHPEclipseSQLPlugin.getImage("refresh.gif")); //$NON-NLS-1$
-    toolItem.setToolTipText(Messages.getString("tableview.refresh")); //$NON-NLS-1$
-    toolItem.addSelectionListener(new SelectionListener() {
-      public void widgetDefaultSelected(SelectionEvent e) {
-      }
-      public void widgetSelected(SelectionEvent e) {
-        refreshTableAction.run();
-      }
-    });
-    toolItem = new ToolItem(toolbar, SWT.PUSH);
-    toolItem.setImage(PHPEclipseSQLPlugin.getImage("copy.gif")); //$NON-NLS-1$
-    toolItem.setToolTipText(Messages.getString("tableview.copy")); //$NON-NLS-1$
-    toolItem.addSelectionListener(new SelectionListener() {
-      public void widgetDefaultSelected(SelectionEvent e) {
-      }
-      public void widgetSelected(SelectionEvent e) {
-        copyAction.run();
-      }
-    });
-    toolItem = new ToolItem(toolbar, SWT.PUSH);
-    toolItem.setImage(PHPEclipseSQLPlugin.getImage("table.gif")); //$NON-NLS-1$
-    toolItem.setToolTipText(Messages.getString("tableview.selectAll")); //$NON-NLS-1$
-    toolItem.addSelectionListener(new SelectionListener() {
-      public void widgetDefaultSelected(SelectionEvent e) {
-      }
-      public void widgetSelected(SelectionEvent e) {
-        selectAllAction.run();
-      }
-    });
+       private Clipboard clip;
+       private RefreshTableAction refreshTableAction;
+       private CloseTableAction closeTableAction;
+       private static TableView instance = null;
+       private TabFolder tabs;
+       private Composite parent;
+       public TableView() {
+               super();
+       }
+       public void setFocus() {
+       }
+       public static TableView getInstance() {
+               return instance;
+       }
+       public void closeCurrent() {
+               TabItem item = tabs.getItem(tabs.getSelectionIndex());
+               item.dispose();
+       }
+       public void refreshCurrent() {
+               TabItem item = tabs.getItem(tabs.getSelectionIndex());
+               TableAdapter adapter = (TableAdapter) item.getData();
+               BookmarkView bookmarkView = BookmarkView.getInstance();
+               BookmarkNode bookmark = bookmarkView.getCurrentBookmark();
+               String table = adapter.getTable();
+               if (table == null) {
+                       loadTable(bookmark, item, null, null, true, true);
+               } else {
+                       loadTable(bookmark, item, null, null, true, true);
+               }
+       }
+       public void loadQuery(BookmarkNode bookmark, SQLResults results) {
+               loadTable(bookmark, null, null, results, true, false);
+       }
+       public void loadTable(BookmarkNode bookmark, String table) {
+               loadTable(bookmark, null, table, null, false, true);
+       }
+       public void loadTable(BookmarkNode bookmark, TabItem tabItem, String entity, SQLResults results, boolean query, boolean reload) {
+               TableAdapter adapter;
+               if (tabItem == null) {
+                       tabItem = new TabItem(tabs, SWT.NONE);
+                       if (query) {
+                               adapter = TableAdapter.createFromQuery(bookmark, results);
+                       } else {
+                               adapter = TableAdapter.createFromTable(bookmark, entity);
+                       }
+                       tabItem.setData(adapter);
+               } else {
+                       adapter = (TableAdapter) tabItem.getData();
+               }
 
-    ToolItem filter = new ToolItem(toolbar, SWT.PUSH);
-    filter.setImage(PHPEclipseSQLPlugin.getImage("filter.gif")); //$NON-NLS-1$
-    filter.setToolTipText(Messages.getString("tableview.filterSort")); //$NON-NLS-1$
+               final TableAdapter ta = adapter;
+               
+               Composite main = new Composite(tabs, SWT.NONE);
+               GridLayout layout = new GridLayout(1, false);
+               layout.horizontalSpacing = 0;
+               layout.verticalSpacing = 0;
+               main.setLayout(layout);
 
-    toolItem = new ToolItem(toolbar, SWT.SEPARATOR);
+               // load up main
+               ToolBar toolbar = new ToolBar(main, SWT.HORIZONTAL);
+               final Table table = new Table(main, SWT.FULL_SELECTION | SWT.MULTI);
+               final Label label = new Label(main, SWT.NULL);
 
-    final ToolItem fullMode = new ToolItem(toolbar, SWT.PUSH | SWT.CHECK);
+               final Action copyAction = new Action() {
+                       public void run() {
+                               TableItem items[] = table.getSelection();
+                               StringBuffer text = new StringBuffer();
+                               for (int i = 0; i < items.length; i++) {
+                                       int columns = table.getColumnCount();
+                                       for (int col = 0; col < columns; col++) {
+                                               text.append(items[i].getText(col));
+                                               text.append('\t');
+                                       }
+                                       text.append('\n');
+                               }
+                               clip.setContents(
+                                       new Object[] { text.toString()},
+                                       new Transfer[] { TextTransfer.getInstance()});
+                       }
+               };
+               final Action selectAllAction = new Action() {
+                       public void run() {
+                               table.selectAll();
+                       }
+               };
 
-    final ToolItem previous = new ToolItem(toolbar, SWT.PUSH);
-    final ToolItem next = new ToolItem(toolbar, SWT.PUSH);
+               // load toobar
+               ToolItem toolItem = new ToolItem(toolbar, SWT.PUSH);
+               toolItem.setImage(PHPEclipseSQLPlugin.getImage("refresh.gif")); //$NON-NLS-1$
+               toolItem.setToolTipText(Messages.getString("tableview.refresh")); //$NON-NLS-1$
+               toolItem.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               refreshTableAction.run();
+                       }
+               });
+               toolItem = new ToolItem(toolbar, SWT.PUSH);
+               toolItem.setImage(PHPEclipseSQLPlugin.getImage("copy.gif")); //$NON-NLS-1$
+               toolItem.setToolTipText(Messages.getString("tableview.copy")); //$NON-NLS-1$
+               toolItem.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               copyAction.run();
+                       }
+               });
+               toolItem = new ToolItem(toolbar, SWT.PUSH);
+               toolItem.setImage(PHPEclipseSQLPlugin.getImage("table.gif")); //$NON-NLS-1$
+               toolItem.setToolTipText(Messages.getString("tableview.selectAll")); //$NON-NLS-1$
+               toolItem.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               selectAllAction.run();
+                       }
+               });
 
-    fullMode.setImage(PHPEclipseSQLPlugin.getImage("fulldata.gif"));
-    fullMode.setToolTipText(Messages.getString("tableview.showAll")); //$NON-NLS-1$
-    fullMode.setSelection(false);
-    fullMode.addSelectionListener(new SelectionListener() {
-      public void widgetDefaultSelected(SelectionEvent e) {
-      }
-      public void widgetSelected(SelectionEvent e) {
-        if (ta.getPageSize() == Integer.MAX_VALUE) {
-          ta.resetMode();
-        } else {
-          ta.fullMode();
-        }
-        ta.loadData();
-        table.removeAll();
-        for (int i = table.getColumnCount() - 1; i >= 0; i--) {
-          table.getColumn(i).dispose();
-        }
-        ta.loadTable(table);
-        label.setText(ta.getStatusString());
-        previous.setEnabled(ta.hasPreviousPage());
-        next.setEnabled(ta.hasNextPage());
-      }
-    });
-    previous.setImage(PHPEclipseSQLPlugin.getImage("previous.gif"));
-    previous.setToolTipText("Previous");
-    previous.addSelectionListener(new SelectionListener() {
-      public void widgetDefaultSelected(SelectionEvent e) {
-      }
-      public void widgetSelected(SelectionEvent e) {
-        ta.previousPage();
-        ta.loadData();
-        table.removeAll();
-        for (int i = table.getColumnCount() - 1; i >= 0; i--) {
-          table.getColumn(i).dispose();
-        }
-        ta.loadTable(table);
-        label.setText(ta.getStatusString());
-        previous.setEnabled(ta.hasPreviousPage());
-        next.setEnabled(ta.hasNextPage());
-      }
-    });
-    next.setImage(PHPEclipseSQLPlugin.getImage("next.gif"));
-    next.setToolTipText("Next");
-    next.addSelectionListener(new SelectionListener() {
-      public void widgetDefaultSelected(SelectionEvent e) {
-      }
-      public void widgetSelected(SelectionEvent e) {
-        ta.nextPage();
-        ta.loadData();
-        table.removeAll();
-        for (int i = table.getColumnCount() - 1; i >= 0; i--) {
-          table.getColumn(i).dispose();
-        }
-        ta.loadTable(table);
-        label.setText(ta.getStatusString());
-        previous.setEnabled(ta.hasPreviousPage());
-        next.setEnabled(ta.hasNextPage());
-      }
-    });
+               ToolItem filter = new ToolItem(toolbar, SWT.PUSH);
+               filter.setImage(PHPEclipseSQLPlugin.getImage("filter.gif")); //$NON-NLS-1$
+               filter.setToolTipText(Messages.getString("tableview.filterSort")); //$NON-NLS-1$
 
-    toolItem = new ToolItem(toolbar, SWT.SEPARATOR);
+               toolItem = new ToolItem(toolbar, SWT.SEPARATOR);
 
-    toolItem = new ToolItem(toolbar, SWT.PUSH);
-    toolItem.setImage(PHPEclipseSQLPlugin.getImage("close.gif")); //$NON-NLS-1$
-    toolItem.setToolTipText(Messages.getString("tableview.close")); //$NON-NLS-1$
-    toolItem.addSelectionListener(new SelectionListener() {
-      public void widgetDefaultSelected(SelectionEvent e) {
-      }
-      public void widgetSelected(SelectionEvent e) {
-        closeTableAction.run();
-      }
-    });
+               final ToolItem fullMode = new ToolItem(toolbar, SWT.PUSH | SWT.CHECK);
 
-    // load table
-    if (reload) {
-      adapter.resetOffset();
-      adapter.loadData();
-    }
-    adapter.loadTable(table);
-    String tableName = adapter.getTable();
-    if (tableName != null) {
-      tabItem.setText(tableName);
-    } else {
-      tabItem.setText(adapter.getQuery());
-    }
+               final ToolItem previous = new ToolItem(toolbar, SWT.PUSH);
+               final ToolItem next = new ToolItem(toolbar, SWT.PUSH);
 
-    previous.setEnabled(adapter.hasPreviousPage());
-    next.setEnabled(adapter.hasNextPage());
-    label.setText(ta.getStatusString());
+               fullMode.setImage(PHPEclipseSQLPlugin.getImage("fulldata.gif")); //$NON-NLS-1$
+               fullMode.setToolTipText(Messages.getString("tableview.showAll")); //$NON-NLS-1$
+               fullMode.setSelection(false);
+               fullMode.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               if (ta.getPageSize() == Integer.MAX_VALUE) {
+                                       ta.resetMode();
+                               } else {
+                                       ta.fullMode();
+                               }
+                               ta.loadData();
+                               table.removeAll();
+                               for (int i = table.getColumnCount() - 1; i >= 0; i--) {
+                                       table.getColumn(i).dispose();
+                               }
+                               ta.loadTable(table);
+                               label.setText(ta.getStatusString());
+                               previous.setEnabled(ta.hasPreviousPage());
+                               next.setEnabled(ta.hasNextPage());
+                       }
+               });
+               previous.setImage(PHPEclipseSQLPlugin.getImage("previous.gif")); //$NON-NLS-1$
+               previous.setToolTipText("Previous"); //$NON-NLS-1$
+               previous.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               ta.previousPage();
+                               ta.loadData();
+                               table.removeAll();
+                               for (int i = table.getColumnCount() - 1; i >= 0; i--) {
+                                       table.getColumn(i).dispose();
+                               }
+                               ta.loadTable(table);
+                               label.setText(ta.getStatusString());
+                               previous.setEnabled(ta.hasPreviousPage());
+                               next.setEnabled(ta.hasNextPage());
+                       }
+               });
+               next.setImage(PHPEclipseSQLPlugin.getImage("next.gif")); //$NON-NLS-1$
+               next.setToolTipText("Next"); //$NON-NLS-1$
+               next.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               ta.nextPage();
+                               ta.loadData();
+                               table.removeAll();
+                               for (int i = table.getColumnCount() - 1; i >= 0; i--) {
+                                       table.getColumn(i).dispose();
+                               }
+                               ta.loadTable(table);
+                               label.setText(ta.getStatusString());
+                               previous.setEnabled(ta.hasPreviousPage());
+                               next.setEnabled(ta.hasNextPage());
+                       }
+               });
 
-    GridData gridData = new GridData();
-    gridData.horizontalAlignment = GridData.FILL;
-    gridData.verticalAlignment = GridData.FILL;
-    gridData.grabExcessHorizontalSpace = true;
-    gridData.grabExcessVerticalSpace = true;
-    table.setLayoutData(gridData);
+               toolItem = new ToolItem(toolbar, SWT.SEPARATOR);
 
-    gridData = new GridData();
-    gridData.horizontalAlignment = GridData.FILL;
-    label.setLayoutData(gridData);
+               toolItem = new ToolItem(toolbar, SWT.PUSH);
+               toolItem.setImage(PHPEclipseSQLPlugin.getImage("close.gif")); //$NON-NLS-1$
+               toolItem.setToolTipText(Messages.getString("tableview.close")); //$NON-NLS-1$
+               toolItem.addSelectionListener(new SelectionListener() {
+                                                                                 public void widgetDefaultSelected(SelectionEvent e) {
+                                                                                 }
+                                                                                 public void widgetSelected(SelectionEvent e) {
+                                                                                         closeTableAction.run();
+                                                                                 }
+                                                                         });
 
-    // create empty table row
-    TableColumn[] columns = table.getColumns();
-    String columnNames[] = new String[columns.length];
-    for (int i = 0; i < columns.length; i++) {
-      columnNames[i] = columns[i].getText();
-    }
-    String data[] = new String[columnNames.length];
-    for (int i = 0; i < columns.length; i++) {
-      data[i] = "";
-    }
-    final TableRow emptyRow = new TableRow(ta.getTable(), columnNames, data);
+               // load table
+               if (reload) {
+                       adapter.resetOffset();
+                       adapter.loadData();
+               }
+               adapter.loadTable(table);
+               String tableName = adapter.getTable();
+               if (tableName != null) {
+                       tabItem.setText(tableName);
+               } else {
+                       tabItem.setText(adapter.getQuery());
+               }
 
-    filter.addSelectionListener(new SelectionListener() {
-      public void widgetDefaultSelected(SelectionEvent e) {
-      }
-      public void widgetSelected(SelectionEvent e) {
-        SortFilterPage page = new SortFilterPage("");
-        SQLRowWizard wizard = new SQLRowWizard();
-        wizard.init("Filter and Sort", page, emptyRow, ta);
-        WizardDialog dialog = new WizardDialog(getSite().getShell(), wizard);
-        dialog.open();
-      }
-    });
+               previous.setEnabled(adapter.hasPreviousPage());
+               next.setEnabled(adapter.hasNextPage());
+               label.setText(ta.getStatusString());
+               
+               GridData gridData = new GridData();
+               gridData.horizontalAlignment = GridData.FILL;
+               gridData.verticalAlignment = GridData.FILL;
+               gridData.grabExcessHorizontalSpace = true;
+               gridData.grabExcessVerticalSpace = true;
+               table.setLayoutData(gridData);
 
-    final Action defaultEncodingAction = new Action() {
-      public void run() {
-        ta.setEncoding(TableAdapter.DEFAULT);
-      }
-    };
-    defaultEncodingAction.setText(Messages.getString("tableview.defaultEncoding")); //$NON-NLS-1$
-    final Action UTF8EncodingAction = new Action() {
-      public void run() {
-        ta.setEncoding(TableAdapter.UTF_8);
-      }
-    };
-    UTF8EncodingAction.setText(Messages.getString("tableview.UTF8Encoding")); //$NON-NLS-1$
-    final Action UTF16EncodingAction = new Action() {
-      public void run() {
-        ta.setEncoding(TableAdapter.UTF_16);
-      }
-    };
-    UTF16EncodingAction.setText(Messages.getString("tableview.UTF16Encoding")); //$NON-NLS-1$
+               gridData = new GridData();
+               gridData.horizontalAlignment = GridData.FILL;
+               label.setLayoutData(gridData);
 
-    IMenuListener menuListener = new IMenuListener() {
-      public void menuAboutToShow(IMenuManager mgr) {
-        if (ta.getTable() != null) {
-          TableItem[] selection = table.getSelection();
-          TableColumn[] columns = table.getColumns();
-          String columnNames[] = new String[columns.length];
-          for (int i = 0; i < columns.length; i++) {
-            columnNames[i] = columns[i].getText();
-          }
-          String data[] = new String[columnNames.length];
-          if (selection != null && selection.length > 0) {
-            TableItem sel = selection[0];
-            for (int i = 0; i < columns.length; i++) {
-              data[i] = sel.getText(i);
-            }
-          } else {
-            for (int i = 0; i < columns.length; i++) {
-              data[i] = "";
-            }
-          }
-          final TableRow row = new TableRow(ta.getTable(), columnNames, data);
-          Action updateAction = new Action() {
-            public void run() {
-              UpdateRowPage page = new UpdateRowPage("");
-              SQLRowWizard wizard = new SQLRowWizard();
-              wizard.init("Update Row", page, row, ta);
-              WizardDialog dialog =
-                new WizardDialog(getSite().getShell(), wizard);
-              dialog.open();
-            }
-          };
-          updateAction.setText(Messages.getString("tableview.update")); //$NON-NLS-1$
-          Action insertAction = new Action() {
-            public void run() {
-              InsertRowPage page = new InsertRowPage("");
-              SQLRowWizard wizard = new SQLRowWizard();
-              wizard.init("Insert Row", page, row, ta);
-              WizardDialog dialog =
-                new WizardDialog(getSite().getShell(), wizard);
-              dialog.open();
-            }
-          };
-          insertAction.setText(Messages.getString("tableview.insert")); //$NON-NLS-1$
-          Action deleteAction = new Action() {
-            public void run() {
-              DeleteRowPage page = new DeleteRowPage("");
-              SQLRowWizard wizard = new SQLRowWizard();
-              wizard.init("Delete Row", page, row, ta);
-              WizardDialog dialog =
-                new WizardDialog(getSite().getShell(), wizard);
-              dialog.open();
-            }
-          };
-          deleteAction.setText(Messages.getString("tableview.delete")); //$NON-NLS-1$
+               // create empty table row
+               TableColumn[] columns = table.getColumns();
+               String columnNames[] = new String[columns.length];
+               for (int i = 0; i < columns.length; i++) {
+                       columnNames[i] = columns[i].getText();
+               }
+               String data[] = new String[columnNames.length];
+               for (int i = 0; i < columns.length; i++) {
+                       data[i] = ""; //$NON-NLS-1$
+               }
+               
+               final TableRow emptyRow =
+                       new TableRow(ta.getBookmark(), ta.getTable(), columnNames, data);
+               
+               filter.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                                       SortFilterPage page = new SortFilterPage(""); //$NON-NLS-1$
+                                       SQLRowWizard wizard = new SQLRowWizard();
+                                       wizard.init(Messages.getString("TableView.FilterAndSort"), page, emptyRow, ta); //$NON-NLS-1$
+                                       WizardDialog dialog =
+                                               new WizardDialog(
+                                                       getSite().getShell(),
+                                                       wizard);
+                                       dialog.open();
+                       }
+               });
 
-          Action phpSelectAction = new Action() {
-            public void run() {
-              PHPSelectRowPage page = new PHPSelectRowPage("");
-              SQLRowWizard wizard = new SQLRowWizard();
-              wizard.init("PHP Select Generation", page, row, ta);
-              WizardDialog dialog =
-                new WizardDialog(getSite().getShell(), wizard);
-              dialog.open();
-            }
-          };
-          phpSelectAction.setText(Messages.getString("tableview.phpselect")); //$NON-NLS-1$
 
-          mgr.add(phpSelectAction);
-          
-          mgr.add(insertAction);
-          mgr.add(updateAction);
-          mgr.add(deleteAction);
-          
-          
-        }
-        mgr.add(defaultEncodingAction);
-        mgr.add(UTF8EncodingAction);
-        mgr.add(UTF16EncodingAction);
-      }
-    };
+               final Action defaultEncodingAction = new Action() {
+                       public void run() {
+                               ta.setEncoding(TableAdapter.DEFAULT);
+                       }
+               };
+               defaultEncodingAction.setText(Messages.getString("tableview.defaultEncoding")); //$NON-NLS-1$
+               final Action UTF8EncodingAction = new Action() {
+                       public void run() {
+                               ta.setEncoding(TableAdapter.UTF_8);
+                       }
+               };
+               UTF8EncodingAction.setText(Messages.getString("tableview.UTF8Encoding")); //$NON-NLS-1$
+               final Action UTF16EncodingAction = new Action() {
+                       public void run() {
+                               ta.setEncoding(TableAdapter.UTF_16);
+                       }
+               };
+               UTF16EncodingAction.setText(Messages.getString("tableview.UTF16Encoding")); //$NON-NLS-1$
 
-    // final setup
-    MenuManager manager = new MenuManager();
-    manager.setRemoveAllWhenShown(true);
-    Menu fTextContextMenu = manager.createContextMenu(table);
-    table.setMenu(fTextContextMenu);
-    table.setLinesVisible(true);
-    manager.addMenuListener(menuListener);
+               IMenuListener menuListener = new IMenuListener() {
+                       public void menuAboutToShow(IMenuManager mgr) {
+                               if (ta.getTable() != null) {
+                                       TableItem[] selection = table.getSelection();
+                                       TableColumn[] columns = table.getColumns();
+                                       String columnNames[] = new String[columns.length];
+                                       for (int i = 0; i < columns.length; i++) {
+                                               columnNames[i] = columns[i].getText();
+                                       }
+                                       String data[] = new String[columnNames.length];
+                                       if (selection != null && selection.length > 0) {
+                                               TableItem sel = selection[0];
+                                               for (int i = 0; i < columns.length; i++) {
+                                                       data[i] = sel.getText(i);
+                                               }
+                                       } else {
+                                               for (int i = 0; i < columns.length; i++) {
+                                                       data[i] = ""; //$NON-NLS-1$
+                                               }
+                                       }
+                                       final TableRow row =
+                                               new TableRow(ta.getBookmark(), ta.getTable(), columnNames, data);
+                                               Action updateAction = new Action() {
+                                                       public void run() {
+                                                               UpdateRowPage page = new UpdateRowPage(""); //$NON-NLS-1$
+                                                               SQLRowWizard wizard = new SQLRowWizard();
+                                                               wizard.init(Messages.getString("TableView.UpdateRow"), page, row, ta); //$NON-NLS-1$
+                                                               WizardDialog dialog =
+                                                                       new WizardDialog(
+                                                                               getSite().getShell(),
+                                                                               wizard);
+                                                               dialog.open();
+                                                       }
+                                               };
+                                               updateAction.setText(Messages.getString("tableview.update")); //$NON-NLS-1$
+                                               Action insertAction = new Action() {
+                                                       public void run() {
+                                                               InsertRowPage page = new InsertRowPage(""); //$NON-NLS-1$
+                                                               SQLRowWizard wizard = new SQLRowWizard();
+                                                               wizard.init(Messages.getString("TableView.InsertRow"), page, row, ta); //$NON-NLS-1$
+                                                               WizardDialog dialog =
+                                                                       new WizardDialog(
+                                                                               getSite().getShell(),
+                                                                               wizard);
+                                                               dialog.open();
+                                                       }
+                                               };
+                                               insertAction.setText(Messages.getString("tableview.insert")); //$NON-NLS-1$
+                                               Action deleteAction = new Action() {
+                                                       public void run() {
+                                                               DeleteRowPage page = new DeleteRowPage(""); //$NON-NLS-1$
+                                                               SQLRowWizard wizard = new SQLRowWizard();
+                                                               wizard.init(Messages.getString("TableView.DeleteRow"), page, row, ta); //$NON-NLS-1$
+                                                               WizardDialog dialog =
+                                                                       new WizardDialog(
+                                                                               getSite().getShell(),
+                                                                               wizard);
+                                                               dialog.open();
+                                                       }
+                                               };
+                                               deleteAction.setText(Messages.getString("tableview.delete")); //$NON-NLS-1$
+                                               mgr.add(insertAction);
+                                               mgr.add(updateAction);
+                                               mgr.add(deleteAction);
+                                       }
+                                       mgr.add(defaultEncodingAction);
+                                       mgr.add(UTF8EncodingAction);
+                                       mgr.add(UTF16EncodingAction);
+                               }
+               };
 
-    tabItem.setControl(main);
-    tabs.setSelection(tabs.indexOf(tabItem));
-  }
+               // final setup
+               MenuManager manager = new MenuManager();
+               manager.setRemoveAllWhenShown(true);
+               Menu fTextContextMenu = manager.createContextMenu(table);
+               table.setMenu(fTextContextMenu);
+               table.setLinesVisible(true);
+               manager.addMenuListener(menuListener);
+               
+               tabItem.setControl(main);
+               tabs.setSelection(tabs.indexOf(tabItem));
+       }
 
-  public void createPartControl(Composite parent) {
-    instance = this;
-    this.parent = parent;
-    initActions();
-    clip = new Clipboard(getSite().getShell().getDisplay());
-    tabs = new TabFolder(parent, SWT.NONE);
-  }
-  public void initActions() {
-    refreshTableAction = new RefreshTableAction();
-    refreshTableAction.setText(Messages.getString("tableview.refresh"));
-    refreshTableAction.setImageDescriptor(
-      PHPEclipseSQLPlugin.getImageDescriptor("refresh.gif"));
-    refreshTableAction.init(this);
-    closeTableAction = new CloseTableAction();
-    closeTableAction.setText(Messages.getString("tableview.close"));
-    closeTableAction.setImageDescriptor(
-      PHPEclipseSQLPlugin.getImageDescriptor("close.gif"));
-    closeTableAction.init(this);
-  }
+       public void createPartControl(Composite parent) {
+               instance = this;
+               this.parent = parent;
+               initActions();
+               clip = new Clipboard(getSite().getShell().getDisplay());
+               tabs = new TabFolder(parent, SWT.NONE);
+       }
+       public void initActions() {
+               refreshTableAction = new RefreshTableAction();
+               refreshTableAction.setText(Messages.getString("tableview.refresh")); //$NON-NLS-1$
+               refreshTableAction.setImageDescriptor(
+                       PHPEclipseSQLPlugin.getImageDescriptor("refresh.gif")); //$NON-NLS-1$
+               refreshTableAction.init(this);
+               closeTableAction = new CloseTableAction();
+               closeTableAction.setText(Messages.getString("tableview.close")); //$NON-NLS-1$
+               closeTableAction.setImageDescriptor(
+                       PHPEclipseSQLPlugin.getImageDescriptor("close.gif")); //$NON-NLS-1$
+               closeTableAction.init(this);
+       }
 
-  public void selectionChanged(IWorkbenchPart part, ISelection selection) {
-  }
+       public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+       }
 }
\ No newline at end of file