blob: afebef3ba241334e42046157e1afceaf2f4a67c2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 BestSolution.at 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:
* Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation
******************************************************************************/
package org.eclipse.e4.tools.emf.ui.common;
import org.eclipse.core.databinding.conversion.Converter;
import org.eclipse.e4.tools.emf.ui.internal.Messages;
import org.eclipse.e4.ui.internal.workbench.E4XMIResource;
import org.eclipse.e4.ui.model.application.commands.MCommand;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
@SuppressWarnings("restriction")
public class CommandToStringConverter extends Converter {
private final Messages Messages;
public CommandToStringConverter(Messages Messages) {
super(MCommand.class, String.class);
this.Messages = Messages;
}
@Override
public Object convert(Object fromObject) {
final MCommand cmd = (MCommand) fromObject;
String elementId = null;
if (cmd != null && cmd.getElementId() != null && cmd.getElementId().trim().length() > 0) {
elementId = cmd.getElementId();
}
if (cmd == null) {
return Messages.CommandToStringConverter_None;
} else if (cmd.getCommandName() != null && cmd.getCommandName().trim().length() > 0) {
return cmd.getCommandName() + (elementId != null ? " - " + elementId : ""); //$NON-NLS-1$//$NON-NLS-2$
} else if (elementId != null) {
return elementId;
} else {
final Resource res = ((EObject) cmd).eResource();
if (res instanceof E4XMIResource) {
final String v = ((E4XMIResource) res).getID((EObject) cmd);
if (v != null && v.trim().length() > 0) {
return v;
}
}
return cmd.getClass().getSimpleName() + "@" + cmd.hashCode(); //$NON-NLS-1$
}
}
}