blob: a0c2c56fcc534adb42977f05f3652772d6a7a2bb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2010 Soyatec (http://www.soyatec.com) 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:
* Soyatec - initial API and implementation
*******************************************************************************/
package org.eclipse.xwt.tools.ui.designer.core.editor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartViewer;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.ui.IEditorPart;
/**
* @author jliu (jin.liu@soyatec.com)
*/
public class EditDomain extends DefaultEditDomain {
private Map<Object, Map<Object, Object>> viewerData;
private Map<Object, Object> domainData;
private List<EditPartViewer> viewers = new ArrayList<EditPartViewer>();
/**
* @param editorPart
*/
public EditDomain(IEditorPart editorPart) {
super(editorPart);
}
public void addViewer(EditPartViewer viewer) {
super.addViewer(viewer);
if (!viewers.contains(viewer)) {
viewers.add(viewer);
}
}
public void removeViewer(EditPartViewer viewer) {
super.removeViewer(viewer);
viewers.remove(viewer);
}
public List<EditPartViewer> getViewers() {
return viewers;
}
/**
* @param graphicalViewer
* @param key
* @param zoomController
*/
public void setViewerData(GraphicalViewer viewer, Object key, Object data) {
if (viewerData == null)
viewerData = new HashMap<Object, Map<Object, Object>>(3);
HashMap<Object, Object> vdata = (HashMap<Object, Object>) viewerData.get(viewer);
if (vdata == null)
viewerData.put(viewer, vdata = new HashMap<Object, Object>(3));
vdata.put(key, data);
}
/**
* Get the data for the specified key for a particular viewer. Return null if the key is not set.
*/
public Object getViewerData(EditPartViewer viewer, Object key) {
if (viewerData != null) {
HashMap<Object, Object> data = (HashMap<Object, Object>) viewerData.get(viewer);
if (data != null)
return data.get(key);
}
return null;
}
public void setData(Object key, Object data) {
if (domainData == null) {
domainData = new HashMap<Object, Object>();
}
domainData.put(key, data);
}
public Object getData(Object key) {
if (domainData == null) {
return null;
}
return domainData.get(key);
}
public static EditDomain getEditDomain(EditPart ep) {
if (ep != null) {
EditPartViewer viewer = ep.getViewer();
if (viewer == null ){
return null;
}
return (EditDomain) viewer.getEditDomain();
}
return null;
}
}