com.nextep.designer.sqlclient.ui.rcp.SQLResultsView.java Source code

Java tutorial

Introduction

Here is the source code for com.nextep.designer.sqlclient.ui.rcp.SQLResultsView.java

Source

/*******************************************************************************
 * Copyright (c) 2011 neXtep Software and contributors.
 * All rights reserved.
 *
 * This file is part of neXtep designer.
 *
 * NeXtep designer is free software: you can redistribute it 
 * and/or modify it under the terms of the GNU General Public 
 * License as published by the Free Software Foundation, either 
 * version 3 of the License, or any later version.
 *
 * NeXtep designer is distributed in the hope that it will be 
 * useful, but WITHOUT ANY WARRANTY; without even the implied
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
 * See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Contributors:
 *     neXtep Softwares - initial API and implementation
 *******************************************************************************/
package com.nextep.designer.sqlclient.ui.rcp;

import org.eclipse.jface.action.GroupMarker;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
import com.nextep.designer.sqlclient.ui.SQLClientPlugin;
import com.nextep.designer.sqlclient.ui.connectors.SQLResultConnector;
import com.nextep.designer.sqlclient.ui.model.IPinnable;
import com.nextep.designer.sqlclient.ui.model.ISQLQuery;
import com.nextep.designer.sqlclient.ui.model.ISQLQueryListener;
import com.nextep.designer.sqlclient.ui.services.ISQLClientService;
import com.nextep.designer.ui.model.IUIComponent;
import com.nextep.designer.ui.model.IUIComponentContainer;

public class SQLResultsView extends ViewPart implements IUIComponentContainer, IPinnable {

    public final static String VIEW_ID = "com.neXtep.designer.sqlclient.ui.rcp.SQLResultsView"; ////$NON-NLS-1$
    private final static String PROP_EDITABLE = "editable";
    private SQLResultConnector sqlResultsComponent;
    private Control control;
    private boolean pinned = false;

    public SQLResultsView() {
        sqlResultsComponent = new SQLResultConnector();
    }

    @Override
    public IUIComponent getUIComponent() {
        return sqlResultsComponent;
    }

    @Override
    public void run(boolean block, boolean cancellable, IRunnableWithProgress runnable) {

    }

    @Override
    public void createPartControl(Composite parent) {
        control = sqlResultsComponent.create(parent);
        TableViewer viewer = sqlResultsComponent.getTableViewer();
        getSite().setSelectionProvider(viewer);
        registerContextMenu(viewer);
        PlatformUI.getWorkbench().getHelpSystem().setHelp(control,
                "com.neXtep.designer.sqlclient.ui.SQLResultsView"); //$NON-NLS-1$
    }

    @Override
    public void setFocus() {
        control.setFocus();
    }

    public void resizeColumns() {
        sqlResultsComponent.adjusteColumnSizes();
    }

    @Override
    public Object getAdapter(Class adapter) {
        if (adapter == ISQLQuery.class) {
            return sqlResultsComponent.getSQLQuery();
        } else if (adapter == ISQLQueryListener.class) {
            return sqlResultsComponent;
        } else if (adapter == IPinnable.class) {
            return this;
        }
        return super.getAdapter(adapter);
    }

    private void registerContextMenu(TableViewer viewer) {
        MenuManager contextMenu = new MenuManager();
        contextMenu.setRemoveAllWhenShown(true);

        // this is to work around complaints about missing standard groups.
        contextMenu.addMenuListener(new IMenuListener() {

            public void menuAboutToShow(IMenuManager manager) {
                manager.add(new GroupMarker("editions")); //$NON-NLS-1$
                manager.add(new Separator());
                manager.add(new GroupMarker("actions")); //$NON-NLS-1$
                manager.add(new Separator());
                manager.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));

            }
        });

        getSite().registerContextMenu(contextMenu, viewer);
        Menu menu = contextMenu.createContextMenu(viewer.getTable());
        viewer.getTable().setMenu(menu);
    }

    public void setEditableState(boolean isEditable) {
        final boolean oldValue = sqlResultsComponent.getEditableState();
        sqlResultsComponent.setEditableState(isEditable);
        firePartPropertyChanged(PROP_EDITABLE, String.valueOf(oldValue), String.valueOf(isEditable));
    }

    public boolean getEditableState() {
        return sqlResultsComponent.getEditableState();
    }

    @Override
    public void setPinned(boolean pinned) {
        this.pinned = pinned;
    }

    @Override
    public boolean isPinned() {
        return pinned;
    }

    @Override
    public void dispose() {
        SQLClientPlugin.getService(ISQLClientService.class).viewDisposed(this);
        super.dispose();
    }

    @Override
    public void setErrorMessage(String message) {
        // No error message support
    }
}