@Override
  public boolean execute(PlugInContext context) throws Exception {
    String[] res = getPlugInContext().getSelectedSources();
    final Catalog geocatalog =
        context.getWorkbenchContext().getWorkbench().getFrame().getGeocatalog();
    for (int i = 0; i < res.length; i++) {
      final String name = res[i];
      final EditableSource s = geocatalog.getEditingSource(name);
      if (s.isModified()) {
        try {
          s.getDataSource().commit();
        } catch (DriverException e) {
          ErrorMessages.error(ErrorMessages.CannotSaveSource, e);
        } catch (NonEditableDataSourceException e) {
          ErrorMessages.error(ErrorMessages.CannotSaveSource, e);
        }
      }
      JOptionPane.showMessageDialog(
          geocatalog, I18N.getString("orbisgis.org.orbisgis.core.geocatalog.sourceSaved"));
    }
    // DO NOT REMOVE
    // this call is needed to work around a strange Swing painting problem
    // when using for the first time our custom SourceListRender
    // to display a change in the font of a listed source
    geocatalog.repaint();

    return true;
  }
  public DBSource[] getSelectedDBSources() {
    List<TableNode> tables = new ArrayList<TableNode>();
    TreePath[] treePath;
    try {
      treePath = getTableTree().getSelectionPaths();
      if (treePath == null) return new DBSource[0];
      for (int i = 0; i < treePath.length; i++) {
        Object selectedObject =
            ((DefaultMutableTreeNode) treePath[i].getLastPathComponent()).getUserObject();
        if (selectedObject instanceof TableNode) tables.add(((TableNode) selectedObject));
      }
    } catch (SQLException e) {
      ErrorMessages.error(I18N.getString(""));
      e.printStackTrace();
    } catch (DriverException e) {
      e.printStackTrace();
    }

    final DBSource[] dbSources = new DBSource[tables.size()];
    int i = 0;
    for (TableNode table : tables) {
      dbSources[i] = firstPanel.getDBSource();
      dbSources[i].setTableName(table.getName());
      dbSources[i].setSchemaName(table.getSchema());
      i++;
    }
    return dbSources;
  }
 public boolean execute(PlugInContext context) throws Exception {
   IEditor editor = getPlugInContext().getActiveEditor();
   MapContext map = (MapContext) editor.getElement().getObject();
   ILayer activeLayer = map.getActiveLayer();
   int[] sel = activeLayer.getSelection().clone();
   Arrays.sort(sel);
   DataSource dataSource = activeLayer.getDataSource();
   try {
     dataSource.setDispatchingMode(DataSource.STORE);
     for (int i = sel.length - 1; i >= 0; i--) {
       dataSource.deleteRow(sel[i]);
     }
     dataSource.setDispatchingMode(DataSource.DISPATCH);
   } catch (DriverException e) {
     ErrorMessages.error(ErrorMessages.CannotDeleteSelectedRow, e);
   }
   return true;
 }