Package de.innovationgate.eclipse.wgadesigner.preferences

Source Code of de.innovationgate.eclipse.wgadesigner.preferences.WGARemoteServerPrefPage

/*******************************************************************************
* Copyright (c) 2009, 2010 Innovation Gate GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Innovation Gate GmbH - initial API and implementation
******************************************************************************/
package de.innovationgate.eclipse.wgadesigner.preferences;

import java.io.IOException;

import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;

import de.innovationgate.eclipse.utils.BeanListStore;
import de.innovationgate.eclipse.utils.SWTBotIDs;
import de.innovationgate.eclipse.utils.ui.EditableTableControl;
import de.innovationgate.eclipse.wgadesigner.ResourceIDs;
import de.innovationgate.eclipse.wgadesigner.WGADesignerPlugin;
import de.innovationgate.eclipse.wgadesigner.dialogs.AddWGARemoteServerDialog;
import de.innovationgate.eclipse.wgadesigner.models.WGARemoteServer;
import de.innovationgate.eclipse.wgadesigner.models.WGARemoteServersModel;

public class WGARemoteServerPrefPage extends PreferencePage implements IWorkbenchPreferencePage {


  private Composite _container;
  BeanListStore<WGARemoteServer> _serverstore = WGADesignerPlugin.getDefault().getWGARemoteServerStore();
  private EditableTableControl<WGARemoteServer> _tableControl;
  private WGARemoteServersModel _remoteServerModel;
  private static final String BUTTON_EDIT = "BUTTON_EDIT";

  public WGARemoteServerPrefPage() {
    setDescription("WGA Remoteservers");
  }

  protected Control createContents(Composite parent) {
    _container = new Composite(parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 1;
    layout.marginWidth = 0;
    layout.marginHeight = 0;
    layout.horizontalSpacing = 0;
    layout.verticalSpacing = 0;
    _container.setLayout(layout);

    _tableControl = new EditableTableControl<WGARemoteServer>(_container, SWT.NONE, SWT.BORDER | SWT.FULL_SELECTION) {

      @Override
      protected void createButtonArea(Composite area) {
        super.createButtonArea(area);
        Button btnUpdate = new Button(area, SWT.PUSH);
        btnUpdate.setText("edit");
        btnUpdate.setLayoutData(GridDataFactory.copyData(_btnLayout));
        btnUpdate.setEnabled(false);
        btnUpdate.setData(SWTBotIDs.WIDGET_KEY, ResourceIDs.EDITABLE_TABLE_CONTROL_BUTTON_EDIT);
        _buttons.put(BUTTON_EDIT, btnUpdate);
      }

    };
 

    _tableControl.setLayoutData(new GridData(GridData.FILL_BOTH));

    String[] columnNames = new String[] { "Servername", "URL" };

    _remoteServerModel = new WGARemoteServersModel(_serverstore.getBeans());

    _tableControl.init(columnNames, _remoteServerModel);

    _tableControl.getButton(EditableTableControl.BUTTON_ADD).addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
      public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
        handleAdd();

      }

    });

   

    _tableControl.getButton(EditableTableControl.BUTTON_REMOVE).addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
      public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
        handleRemove();

      }
    });

    _tableControl.getButton(BUTTON_EDIT).addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() {
      public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
        handleEdit();
      }
    });

    _tableControl.getTable().addSelectionListener(new SelectionAdapter() {
      public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
        if (_tableControl.getTable().getSelectionCount() > 0) {
          _tableControl.getButton(BUTTON_EDIT).setEnabled(true);
        } else {
          _tableControl.getButton(BUTTON_EDIT).setEnabled(false);
        }
      }
    });

    GridData g = new GridData(GridData.FILL_HORIZONTAL | GridData.FILL_VERTICAL);
    g.horizontalSpan = 2;

    _tableControl.setLayoutData(g);

    return _container;
  }

  public void init(IWorkbench workbench) {

  }

  private void handleRemove() {

    if (_tableControl.getTable().getSelectionCount() > 0) {
      WGARemoteServer remoteserver = (WGARemoteServer) _tableControl.getTable().getSelection()[0].getData();
      _remoteServerModel.remove(remoteserver);
    }
  }

  @Override
  public boolean performOk() {
 
      try {
        _serverstore.flush();
      } catch (IOException e) {
        WGADesignerPlugin.getDefault().logError("Unable to store remote servers.",e);
        return false;
      }
 
    return true;
  }

  private void handleAdd() {
    AddWGARemoteServerDialog addDialog = new AddWGARemoteServerDialog(getShell(), _remoteServerModel);
   
    addDialog.open();

    if (addDialog.getReturnCode() == Dialog.OK) {
      _remoteServerModel.add(addDialog.getServer());

    }

  }

  private void handleEdit() {
    if (_tableControl.getTable().getSelectionCount() > 0) {
      WGARemoteServer selectedServer = (WGARemoteServer) _tableControl.getTable().getSelection()[0].getData();
      AddWGARemoteServerDialog editDialog = new AddWGARemoteServerDialog(getShell(), _remoteServerModel, selectedServer);
      editDialog.open();

      if (editDialog.getReturnCode() == Dialog.OK) {
        _remoteServerModel.update(editDialog.getServer())
}
      }

    }
  }
TOP

Related Classes of de.innovationgate.eclipse.wgadesigner.preferences.WGARemoteServerPrefPage

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.