| /******************************************************************************* |
| * Copyright (c) 2001, 2006 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 Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.xsd.ui.internal.adt.design.editparts; |
| |
| import org.eclipse.draw2d.ColorConstants; |
| import org.eclipse.draw2d.IFigure; |
| import org.eclipse.draw2d.MouseListener; |
| import org.eclipse.gef.EditPolicy; |
| import org.eclipse.gef.Request; |
| import org.eclipse.gef.RequestConstants; |
| import org.eclipse.ui.part.MultiPageEditorPart; |
| import org.eclipse.wst.xsd.ui.internal.adt.actions.SetInputToGraphView; |
| import org.eclipse.wst.xsd.ui.internal.adt.design.editparts.model.IFeedbackHandler; |
| import org.eclipse.wst.xsd.ui.internal.adt.design.editpolicies.ADTDirectEditPolicy; |
| import org.eclipse.wst.xsd.ui.internal.adt.design.editpolicies.ADTSelectionFeedbackEditPolicy; |
| import org.eclipse.wst.xsd.ui.internal.adt.editor.ADTMultiPageEditor; |
| import org.eclipse.wst.xsd.ui.internal.design.figures.CenteredIconFigure; |
| import org.eclipse.wst.xsd.ui.internal.editor.XSDEditorPlugin; |
| |
| public class BackToSchemaEditPart extends BaseEditPart implements IFeedbackHandler |
| { |
| protected MultiPageEditorPart multipageEditor; |
| protected ADTDirectEditPolicy adtDirectEditPolicy = new ADTDirectEditPolicy(); |
| protected boolean isEnabled; |
| protected CenteredIconFigure backToSchema; |
| protected MouseListener mouseListener; |
| |
| public BackToSchemaEditPart(ADTMultiPageEditor multipageEditor) |
| { |
| super(); |
| this.multipageEditor = multipageEditor; |
| } |
| |
| protected IFigure createFigure() |
| { |
| backToSchema = new CenteredIconFigure(); |
| backToSchema.setBackgroundColor(ColorConstants.white); |
| backToSchema.image = XSDEditorPlugin.getPlugin().getIcon("elcl16/schemaview_co.gif"); |
| // TODO, look at why the editpolicy doesn't work |
| mouseListener = new MouseListener() |
| { |
| public void mouseDoubleClicked(org.eclipse.draw2d.MouseEvent me) |
| { |
| |
| } |
| |
| public void mousePressed(org.eclipse.draw2d.MouseEvent me) |
| { |
| if (isEnabled) |
| { |
| addFeedback(); |
| } |
| } |
| |
| public void mouseReleased(org.eclipse.draw2d.MouseEvent me) |
| { |
| if (isEnabled) |
| { |
| removeFeedback(); |
| SetInputToGraphView action = new SetInputToGraphView(multipageEditor, getModel()); |
| action.run(); |
| } |
| } |
| }; |
| backToSchema.addMouseListener(mouseListener); |
| return backToSchema; |
| } |
| |
| |
| public void setEnabled(boolean isEnabled) |
| { |
| this.isEnabled = isEnabled; |
| refreshVisuals(); |
| } |
| |
| protected void createEditPolicies() |
| { |
| installEditPolicy(EditPolicy.DIRECT_EDIT_ROLE, adtDirectEditPolicy); |
| installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, new ADTSelectionFeedbackEditPolicy()); |
| } |
| |
| public void performRequest(Request request) |
| { |
| if (request.getType() == RequestConstants.REQ_DIRECT_EDIT || request.getType() == RequestConstants.REQ_OPEN) |
| { |
| SetInputToGraphView action = new SetInputToGraphView(multipageEditor, getModel()); |
| action.run(); |
| } |
| } |
| |
| protected void refreshVisuals() |
| { |
| super.refreshVisuals(); |
| CenteredIconFigure figure = (CenteredIconFigure) getFigure(); |
| if (isEnabled) |
| { |
| backToSchema.image = XSDEditorPlugin.getPlugin().getIcon("elcl16/schemaview_co.gif"); |
| } |
| else |
| { |
| backToSchema.image = XSDEditorPlugin.getPlugin().getIcon("dlcl16/schemaview_co.gif"); |
| } |
| figure.refresh(); |
| } |
| |
| public void addFeedback() |
| { |
| CenteredIconFigure figure = (CenteredIconFigure) getFigure(); |
| figure.setMode(CenteredIconFigure.SELECTED); |
| figure.refresh(); |
| } |
| |
| public void removeFeedback() |
| { |
| CenteredIconFigure figure = (CenteredIconFigure) getFigure(); |
| figure.setMode(CenteredIconFigure.NORMAL); |
| figure.refresh(); |
| } |
| |
| public void deactivate() |
| { |
| backToSchema.removeMouseListener(mouseListener); |
| super.deactivate(); |
| } |
| |
| } |