/******************************************************************************* * Copyright (c) 2007-2009 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.hibernate.ui.diagram.editors.command; import java.util.ArrayList; import java.util.List; import org.eclipse.gef.commands.Command; import org.jboss.tools.hibernate.runtime.spi.IPersistentClass; import org.jboss.tools.hibernate.runtime.spi.ITable; import org.jboss.tools.hibernate.ui.diagram.editors.model.OrmShape; /** * * @author Vitali Yemialyanchyk */ public class ToggleShapeVisibleStateCommand extends Command { protected OrmShape primalElement; protected List<OrmShape> selectedShape; protected List<Boolean> selectedShapeStates; public ToggleShapeVisibleStateCommand(List<OrmShape> selectedShape, OrmShape primalElement) { this.primalElement = primalElement; this.selectedShape = selectedShape; selectedShapeStates = new ArrayList<Boolean>(); for (OrmShape shape : selectedShape) { selectedShapeStates.add(shape.isVisible()); } } public void execute() { boolean visState = false; if (primalElement != null) { visState = primalElement.isVisible(); } else if (selectedShape.size() > 0) { visState = selectedShape.get(0).isVisible(); } for (OrmShape shape : selectedShape) { Object ormElement = shape.getOrmElement(); if (ormElement instanceof IPersistentClass || ormElement instanceof ITable) { shape.setVisible(!visState); } } } public void undo() { for (int i = 0; i < selectedShape.size(); i++) { OrmShape shape = selectedShape.get(i); Object ormElement = shape.getOrmElement(); if (ormElement instanceof IPersistentClass || ormElement instanceof ITable) { shape.setVisible(selectedShapeStates.get(i)); } } } public boolean canUndo() { return (selectedShape != null); } }