/*******************************************************************************
* Copyright (c) 2009 Red Hat, Inc.
* 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:
* Red Hat - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.callgraph.core;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
/**
* Class to create / manipulate Views
*/
public class ViewFactory {
private static List<IViewPart> views;
private static SystemTapView newView;
/**
* Create a view of type designated by the viewID argument
* @param viewID : A string corresponding to a type of View
* @return : The view object that corresponds to the viewID
*/
public static SystemTapView createView(final String viewID) {
Display.getDefault().syncExec(() -> {
try {
IViewPart view = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage().
showView(viewID);
if (!(view instanceof SystemTapView)) {
return;
}
newView = ((SystemTapView) view);
newView.setViewID();
} catch (PartInitException e) {
e.printStackTrace();
}
});
addView(newView);
return newView;
}
/**
* Create a view of type designated by the viewID argument
* @param viewID : A string corresponding to a type of View
* @return : The view object that corresponds to the viewID
*/
public static SystemTapView createView(final String viewID, final String secondaryID) {
Display.getDefault().syncExec(() -> {
try {
IViewPart view = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage().showView(viewID, secondaryID, IWorkbenchPage.VIEW_VISIBLE);
if (!(view instanceof SystemTapView)) {
return;
}
newView = ((SystemTapView) view);
newView.setViewID();
} catch (PartInitException e) {
e.printStackTrace();
}
});
addView(newView);
return newView;
}
/**
* Adds a view to the factory's list of active SystemTapViews.
*/
public static void addView(SystemTapView view) {
if (views == null) {
views = new ArrayList<>();
}
views.add(view);
}
}