blob: 3a81b3d251530683cda4cd31cf29a627c72418e2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* IBM - Initial API and implementation
* E.D.Willink - rework of LPG OCL Console for Xtext
*******************************************************************************/
package org.eclipse.ocl.examples.xtext.console;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ocl.examples.xtext.console.messages.ConsoleMessages;
import org.eclipse.ocl.pivot.utilities.LabelUtil;
import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.console.AbstractConsole;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleView;
import org.eclipse.ui.part.IPageBookViewPage;
/**
* The Interactive OCL console.
*/
public class OCLConsole
extends AbstractConsole {
private static OCLConsole instance;
// private OCLConsolePage page;
/**
* Initializes me.
*/
protected OCLConsole() {
super(
ConsoleMessages.Console_Title,
ImageDescriptor.createFromURL(
XtextConsolePlugin.getInstance().getBundle().getEntry(
"/icons/ocl.gif"))); //$NON-NLS-1$
}
/**
* Closes me and clears the singleton instance reference, so that it will
* be reinitialized when another console is requested.
*/
public void close() {
try {
ConsolePlugin.getDefault().getConsoleManager().removeConsoles(
new IConsole[] {this});
dispose();
} finally {
instance = null;
}
}
@Override
public IPageBookViewPage createPage(IConsoleView view) {
OCLConsolePage page = new OCLConsolePage(this);
return page;
}
/**
* Obtains the singleton instance. It is created, if necessary.
*
* @return the singleton console instance
*/
public static OCLConsole getInstance() {
if (instance == null) {
instance = new OCLConsole();
ConsolePlugin.getDefault().getConsoleManager().addConsoles(
new IConsole[] {instance});
}
return instance;
}
/*
* @deprecated supply contextClass(es)
*/
@Deprecated
public void setSelection(EObject contextObject) {
String typeName = "null"; //$NON-NLS-1$;
String objectName = "null"; //$NON-NLS-1$
if (contextObject != null) {
objectName = LabelUtil.getLabel(contextObject);
typeName = contextObject.eClass().getName();
}
setName(NLS.bind(ConsoleMessages.Console_TitleWithContext, objectName, typeName));
}
public void setSelection(@Nullable EObject contextObject, org.eclipse.ocl.pivot.@Nullable Class contextClass) {
String typeName = "null"; //$NON-NLS-1$;
String objectName = "null"; //$NON-NLS-1$
if (contextObject != null) {
objectName = LabelUtil.getLabel(contextObject);
if (contextClass != null) {
typeName = contextClass.getName();
}
}
setName(NLS.bind(ConsoleMessages.Console_TitleWithContext, objectName, typeName));
}
}