/******************************************************************************* * Copyright (c) 2016 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.browsersim.rmi; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; import org.jboss.tools.browsersim.wait.ShellWithTextIsAvailable; import org.jboss.tools.browsersim.wait.WaitUntil; import org.jboss.tools.browsersim.widgets.Browser; import org.jboss.tools.browsersim.widgets.RDDisplay; import org.jboss.tools.browsersim.widgets.ResultRunnable; import org.jboss.tools.browsersim.widgets.WidgetHandler; import org.jboss.tools.browsersim.widgets.WidgetLookup; public class BrowsersimHandler extends UnicastRemoteObject implements IBrowsersimHandler{ private static final long serialVersionUID = 1L; protected BrowsersimHandler() throws RemoteException { super(); } public void openPreferences() throws RemoteException{ Menu menu = getBrowsersimMenu(); MenuItem[] items = WidgetHandler.getMenuItems(menu); WidgetHandler.menuItemClick(items, "Preferences"); new WaitUntil(new ShellWithTextIsAvailable("Preferences")); } @Override public boolean isStarted() throws RemoteException { return BrowsersimUtil.isStarted(); } @Override public String getBrowserText() throws RemoteException { Browser b = new Browser(); return b.getText(); } @Override public void openURL(String url) throws RemoteException { Browser b = new Browser(); b.setURL(url); } @Override public void executeOnBrowser(String script) throws RemoteException { Browser b = new Browser(); b.execute(script); } @Override public Object evaluateOnBrowser(String script) throws RemoteException { Browser b = new Browser(); return b.evaluate(script); } @Override public void browserForward() throws RemoteException { Browser b = new Browser(); b.forward(); } @Override public void browserBack() throws RemoteException { Browser b = new Browser(); b.back(); } @Override public String getURL() throws RemoteException { Browser b= new Browser(); return b.getURL(); } public void getBrowser(){ new Browser(); } @Override public List<String> getSkinsMenuItems() throws RemoteException { Menu menu = getBrowsersimMenu(); MenuItem[] items = WidgetHandler.getMenuItems(menu); MenuItem[] skinItems = WidgetHandler.getMenuItemsFromMenuItem("Skin", items); return WidgetHandler.getMenuItemsText(skinItems); } private Menu getBrowsersimMenu(){ Control bsControl = WidgetLookup.getBrowsersimControl(WidgetLookup.getBrowsersimShell()); WidgetHandler.notify(SWT.MenuDetect,bsControl); return WidgetHandler.getMenu(bsControl); } @Override public void enableLivereload() throws RemoteException { Menu menu = getBrowsersimMenu(); MenuItem[] items = WidgetHandler.getMenuItems(menu); WidgetHandler.menuItemClick(items, "Enable LiveReload"); } @Override public boolean isLivereloadEnabled() throws RemoteException { Menu menu = getBrowsersimMenu(); MenuItem[] items = WidgetHandler.getMenuItems(menu); return WidgetHandler.isMenuSelected(items, "Enable LiveReload"); } public void setBrowsersimLocation(final int x, final int y){ RDDisplay.syncExec(new Runnable() { @Override public void run() { Shell browsersimShell = WidgetLookup.getBrowsersimShell(); browsersimShell.setLocation(x, y); } }); } public Point getBrowsersimSize(){ return RDDisplay.syncExec(new ResultRunnable<Point>() { @Override public Point run() { Shell browsersimShell = WidgetLookup.getBrowsersimShell(); return browsersimShell.getSize(); } }); } }