Java tutorial
/******************************************************************************* * Copyright (c) 2014 SAP AG or an SAP affiliate company. All rights reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.sap.dirigible.ide.registry.ui; import java.net.URL; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.resource.LocalResourceManager; import org.eclipse.jface.resource.ResourceManager; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.graphics.Image; 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.ui.ISelectionListener; import org.eclipse.ui.ISelectionService; import org.eclipse.ui.IViewSite; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.IWorkbenchPartSite; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PartInitException; import org.eclipse.ui.part.ViewPart; import com.sap.dirigible.ide.common.CommonParameters; import com.sap.dirigible.ide.ui.widget.extbrowser.ExtendedBrowser; public class RegistryView extends ViewPart { private static final String REFRESH = Messages.RegistryView_REFRESH; private static final URL DIRIGIBLE_REFRESH_ICON_URL = RegistryView.class.getResource("/resources/refresh.png"); //$NON-NLS-1$ private final ISelectionListener selectionListener = new SelectionListenerImpl(); private ExtendedBrowser browser = null; private final ResourceManager resourceManager; public RegistryView() { super(); resourceManager = new LocalResourceManager(JFaceResources.getResources()); } @Override public void init(IViewSite site) throws PartInitException { super.init(site); attachSelectionListener(site); } @Override public void createPartControl(Composite parent) { GridLayout layout = new GridLayout(1, false); parent.setLayout(layout); final Composite holder = new Composite(parent, SWT.NONE); holder.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false)); holder.setLayout(new GridLayout(3, false)); Button goButton = new Button(holder, SWT.PUSH); goButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false)); goButton.setToolTipText(REFRESH); goButton.setImage(createImage(DIRIGIBLE_REFRESH_ICON_URL)); goButton.addSelectionListener(new SelectionAdapter() { /** * */ private static final long serialVersionUID = 1316287800753595995L; public void widgetSelected(SelectionEvent e) { browser.refresh(); } }); browser = new ExtendedBrowser(parent, SWT.NONE); browser.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); browser.setUrl(CommonParameters.getRuntimeUrl()); } @Override public void setFocus() { browser.setFocus(); } @Override public void dispose() { detachSelectionListener(getSite()); browser = null; super.dispose(); } private void attachSelectionListener(IWorkbenchPartSite site) { if (site == null) { return; } final ISelectionService selectionService = getSelectionService(site); if (selectionService != null) { selectionService.addSelectionListener(selectionListener); } } private void detachSelectionListener(IWorkbenchPartSite site) { if (site == null) { return; } final ISelectionService selectionService = getSelectionService(site); if (selectionService != null) { selectionService.removeSelectionListener(selectionListener); } } private ISelectionService getSelectionService(IWorkbenchPartSite site) { final IWorkbenchWindow window = site.getWorkbenchWindow(); if (window == null) { return null; } return window.getSelectionService(); } private void handleElementSelected(Object element) { // } private class SelectionListenerImpl implements ISelectionListener { public void selectionChanged(IWorkbenchPart part, ISelection selection) { if (selection instanceof IStructuredSelection) { selectionChanged((IStructuredSelection) selection); } } private void selectionChanged(IStructuredSelection selection) { Object element = selection.getFirstElement(); if (element != null) { handleElementSelected(element); } } } private Image createImage(URL imageURL) { ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL(imageURL); return resourceManager.createImage(imageDescriptor); } }