/* $Id$
*******************************************************************************
* Copyright (c) 2010 Contributors - see below
* 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:
* Bob Tarling
*******************************************************************************
*/
package org.argouml.core.propertypanels.ui;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractAction;
import org.argouml.application.helpers.ResourceLoaderWrapper;
import org.argouml.i18n.Translator;
import org.argouml.model.Model;
import org.argouml.ui.targetmanager.TargetManager;
/**
* This action changes the target to the owning model element
* of the given element.
*
* @author Bob Tarling
*/
abstract class NavigateSiblingAction extends AbstractAction {
final Object modelElement;
public NavigateSiblingAction(Object modelElement, String name) {
super(Translator.localize(name),
ResourceLoaderWrapper.lookupIcon(name));
this.modelElement = modelElement;
setEnabled(getTargetSibling() != null);
}
public void actionPerformed(ActionEvent arg0) {
TargetManager.getInstance().setTarget(getTargetSibling());
}
abstract protected Object getTargetSibling();
protected List getAllSiblings() {
List list = null;
final Object owner =
Model.getFacade().getModelElementContainer(modelElement);
if (Model.getFacade().isAAttribute(modelElement)) {
if (Model.getFacade().isAAssociationEnd(Model.getFacade().getOwner(modelElement))) {
list = Model.getFacade().getQualifiers(owner);
} else {
list = Model.getFacade().getAttributes(owner);
}
} else if (Model.getFacade().isAOperation(modelElement)
|| Model.getFacade().isAReception(modelElement)) {
list = Model.getFacade().getOperationsAndReceptions(owner);
} else if (Model.getFacade().isAParameter(modelElement)) {
list = Model.getFacade().getParametersList(owner);
} else if (Model.getFacade().isAAssociationEnd(modelElement)) {
list = new ArrayList(
Model.getFacade().getConnections(owner));
}
return list;
}
}