blob: 66f0510a4e4347562d33609d7c8f48b71d49575e [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2005,2011 IBM Corporation and others.
* 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:
* IBM - Initial API and implementation
* E.D.Willink - rework of LPG OCL Console for Xtext
*
* </copyright>
*
* $Id: OCLConsole.java,v 1.5 2011/05/07 16:41:05 ewillink Exp $
*/
package org.eclipse.ocl.examples.xtext.console;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ocl.examples.domain.utilities.DomainUtil;
import org.eclipse.ocl.examples.xtext.console.messages.ConsoleMessages;
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.
*/
private OCLConsole() {
super(
ConsoleMessages.Console_Title,
ImageDescriptor.createFromURL(
XtextConsolePlugin.getInstance().getBundle().getEntry(
"/icons/ocl.gif"))); //$NON-NLS-1$
}
/**
* 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;
}
public IPageBookViewPage createPage(IConsoleView view) {
page = new OCLConsolePage(this);
return page;
}
public void setTargetMetamodel(TargetMetamodel metamodel) {
// page.setTargetMetamodel(metamodel);
}
/**
* 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;
}
}
public void setSelection(EClassifier contextClassifier, EObject contextObject) {
String typeName = contextClassifier != null ? contextClassifier.getName() : "null"; //$NON-NLS-1$
String objectName = contextObject != null ? DomainUtil.getLabel(contextObject) : "null"; //$NON-NLS-1$
setName(NLS.bind(ConsoleMessages.Console_TitleWithContext, objectName, typeName));
}
}