/* * Copyright (c) 2004-2011 Marco Maccaferri and others. * 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: * Marco Maccaferri - initial API and implementation */ package org.eclipsetrader.directa.internal.ui; import java.text.SimpleDateFormat; import java.util.Calendar; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.action.Separator; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.browser.LocationEvent; import org.eclipse.swt.browser.LocationListener; import org.eclipse.swt.browser.OpenWindowListener; import org.eclipse.swt.browser.ProgressEvent; import org.eclipse.swt.browser.ProgressListener; import org.eclipse.swt.browser.TitleEvent; import org.eclipse.swt.browser.TitleListener; import org.eclipse.swt.browser.WindowEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IMemento; import org.eclipse.ui.IViewSite; import org.eclipse.ui.PartInitException; import org.eclipse.ui.part.ViewPart; import org.eclipsetrader.directa.internal.core.WebConnector; public class WebBrowserView extends ViewPart { public static final String VIEW_ID = "org.eclipsetrader.directa.browser"; //$NON-NLS-1$ private Action stopAction; private Action refreshAction; private Browser browser; private String url; public WebBrowserView() { } /* (non-Javadoc) * @see org.eclipse.ui.part.ViewPart#init(org.eclipse.ui.IViewSite, org.eclipse.ui.IMemento) */ @Override public void init(IViewSite site, IMemento memento) throws PartInitException { super.init(site, memento); if (memento != null) { url = memento.getString("url"); //$NON-NLS-1$ } stopAction = new Action(Messages.WebBrowserView_Stop) { @Override public void run() { browser.stop(); } }; stopAction.setImageDescriptor(ImageResource.getImageDescriptor(ImageResource.IMG_ELCL_NAV_STOP)); stopAction.setDisabledImageDescriptor(ImageResource.getImageDescriptor(ImageResource.IMG_DLCL_NAV_STOP)); stopAction.setEnabled(false); refreshAction = new Action(Messages.WebBrowserView_Refresh) { @Override public void run() { stopAction.setEnabled(true); refreshAction.setEnabled(false); browser.refresh(); } }; refreshAction.setImageDescriptor(ImageResource.getImageDescriptor(ImageResource.IMG_ELCL_NAV_REFRESH)); refreshAction.setDisabledImageDescriptor(ImageResource.getImageDescriptor(ImageResource.IMG_DLCL_NAV_REFRESH)); refreshAction.setEnabled(false); IToolBarManager toolbarManager = site.getActionBars().getToolBarManager(); toolbarManager.add(refreshAction); toolbarManager.add(stopAction); toolbarManager.add(new Separator("additions")); //$NON-NLS-1$ site.getActionBars().updateActionBars(); } /* (non-Javadoc) * @see org.eclipse.ui.part.ViewPart#saveState(org.eclipse.ui.IMemento) */ @Override public void saveState(IMemento memento) { memento.putString("url", url); //$NON-NLS-1$ super.saveState(memento); } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) */ @Override public void createPartControl(Composite parent) { Composite content = new Composite(parent, SWT.NONE); GridLayout gridLayout = new GridLayout(); gridLayout.marginWidth = gridLayout.marginHeight = 0; gridLayout.horizontalSpacing = gridLayout.verticalSpacing = 0; content.setLayout(gridLayout); browser = new Browser(content, SWT.NONE); browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); browser.addTitleListener(new TitleListener() { @Override public void changed(TitleEvent event) { setPartName(event.title); setTitleToolTip(event.title); } }); browser.addProgressListener(new ProgressListener() { @Override public void changed(ProgressEvent event) { } @Override public void completed(ProgressEvent event) { stopAction.setEnabled(false); refreshAction.setEnabled(true); } }); browser.addLocationListener(new LocationListener() { @Override public void changed(LocationEvent event) { } @Override public void changing(LocationEvent event) { stopAction.setEnabled(true); refreshAction.setEnabled(false); } }); browser.addOpenWindowListener(new OpenWindowListener() { @Override public void open(WindowEvent event) { event.browser = browser; } }); setTitleToolTip(getPartName()); if (url != null) { parent.getDisplay().asyncExec(new Runnable() { @Override public void run() { if (!browser.isDisposed()) { setUrl(url); } } }); } } /* (non-Javadoc) * @see org.eclipse.ui.part.WorkbenchPart#setFocus() */ @Override public void setFocus() { browser.setFocus(); } public void setUrl(String url) { WebConnector connector = WebConnector.getInstance(); if ("".equals(connector.getUser())) { //$NON-NLS-1$ connector.login(); } this.url = url; String currentUrl = NLS.bind(url, new Object[] { new SimpleDateFormat("ddMMyyyy").format(Calendar.getInstance().getTime()), //$NON-NLS-1$ connector.getUser(), }); browser.setUrl(currentUrl); } }