package org.jboss.tools.jst.reddeer.web.ui.editor.jspeditor;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.jboss.reddeer.core.handler.WidgetHandler;
import org.jboss.reddeer.core.lookup.EditorPartLookup;
import org.jboss.reddeer.core.util.Display;
import org.jboss.reddeer.core.util.ResultRunnable;
import org.jboss.reddeer.swt.impl.ctab.DefaultCTabFolder;
import org.jboss.reddeer.workbench.api.Editor;
import org.jboss.reddeer.workbench.exception.WorkbenchLayerException;
import org.jboss.reddeer.workbench.impl.editor.AbstractEditor;
import org.jboss.reddeer.workbench.impl.editor.TextEditor;
/*******************************************************************************
* 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
******************************************************************************/
public class JSPMultiPageEditor extends AbstractEditor implements Editor {
protected org.jboss.tools.jst.web.ui.internal.editor.jspeditor.JSPMultiPageEditor editor;
public JSPMultiPageEditor() {
super(EditorPartLookup.getInstance().getEditor());
if (!(editorPart instanceof org.jboss.tools.jst.web.ui.internal.editor.jspeditor.JSPMultiPageEditor)) {
throw new WorkbenchLayerException(
"The active editor is not a JSPMultiPageEditor editor, but " + editorPart.getClass());
}
editor = (org.jboss.tools.jst.web.ui.internal.editor.jspeditor.JSPMultiPageEditor) editorPart;
}
public String getSelectedTextInEditor() {
return new TextEditor().getSelectedText();
}
public boolean hasSourceTab() {
for (String label : getItemLabels()) {
if (label.equals("Source")) {
return true;
}
}
return false;
}
public boolean hasPreviewTab() {
for (String label : getItemLabels()) {
if (label.equals("Preview")) {
return true;
}
}
return false;
}
public boolean hasVisualSourceTab() {
for (String label : getItemLabels()) {
if (label.equals("Visual/Source")) {
return true;
}
}
return false;
}
private String[] getItemLabels() {
org.eclipse.swt.custom.CTabItem[] tabItem = getTabItems(new DefaultCTabFolder().getSWTWidget());
String[] tabItemLabel = new String[tabItem.length];
for (int i = 0; i < tabItem.length; i++) {
tabItemLabel[i] = WidgetHandler.getInstance().getText(tabItem[i]);
}
return tabItemLabel;
}
private CTabItem[] getTabItems(final CTabFolder tabFolder) {
return Display.syncExec(new ResultRunnable<CTabItem[]>() {
@Override
public CTabItem[] run() {
return tabFolder.getItems();
}
});
}
}