/******************************************************************************* * Copyright (c) 2017 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.aerogear.reddeer.thym.ui.properties; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import org.jboss.reddeer.eclipse.ui.dialogs.PropertyPage; import org.jboss.reddeer.swt.api.TreeItem; import org.jboss.reddeer.swt.exception.SWTLayerException; import org.jboss.reddeer.swt.impl.tree.DefaultTree; /** * Represents hybrid mobile project property page * @author Vlado Pakan * @author Pavol Srna * */ public class EnginePropertyPage extends PropertyPage{ public EnginePropertyPage() { super("Hybrid Mobile Engine"); } /** * Returns current checked version on platform defined via parameter * @param platform * @return */ public String getVersion (Platform platform){ String result = null; List<TreeItem> tiVersions = new DefaultTree(1).getAllItems(); Iterator<TreeItem> itVersion = tiVersions.iterator(); while (result == null && itVersion.hasNext()){ TreeItem tiVersion = itVersion.next(); if (tiVersion.isChecked() && tiVersion.getText().contains(platform.toString())){ result = getVersionFromEgineName(tiVersion.getText()); } } return result; } /** * Returns all available engine versions * @return list of versions */ public List<String> getAvailableVersions (Platform platform) { return getAvailableVersions(platform, false); } /** * Returns all available engine versions * @param platform * @param skipNightly - omit nightly versions if true * @return list of versions */ public List<String> getAvailableVersions (Platform platform, boolean skipNightly){ LinkedList<String> result = new LinkedList<String>(); List<TreeItem> tiVersions = new DefaultTree(1).getAllItems(); for (TreeItem tiVersion : tiVersions){ if(tiVersion.getText().contains(platform.toString())){ if(skipNightly){ if(!tiVersion.getText().contains("nightly")){ result.add(getVersionFromEgineName(tiVersion.getText())); } }else{ result.add(getVersionFromEgineName(tiVersion.getText())); } } } return result; } /** * Checks version * @param version */ public void checkVersion (String version, Platform platform){ List<TreeItem> tiVersions = new DefaultTree(1).getAllItems(); Iterator<TreeItem> itVersion = tiVersions.iterator(); boolean notChecked = true; while (notChecked && itVersion.hasNext()){ TreeItem tiVersion = itVersion.next(); if (tiVersion.getText().equals(platform.toString() + "@" + version)){ tiVersion.setChecked(true); notChecked = false; } } if (notChecked){ throw new SWTLayerException("Unable to check mobile engine version: " + version); } } private String getVersionFromEgineName (String engineName){ return engineName.substring(engineName.indexOf('@') + 1, engineName.length()).trim(); } public enum Platform { android {public String toString(){return "cordova-android";}}, ios {public String toString(){return "cordova-ios";}} } }