/* ******************************************************************************
* Copyright (c) 2006-2012 XMind Ltd. and others.
*
* This file is a part of XMind 3. XMind releases 3 and
* above are dual-licensed under the Eclipse Public License (EPL),
* which is available at http://www.eclipse.org/legal/epl-v10.html
* and the GNU Lesser General Public License (LGPL),
* which is available at http://www.gnu.org/licenses/lgpl.html
* See http://www.xmind.net/license.html for details.
*
* Contributors:
* XMind Ltd. - initial API and implementation
*******************************************************************************/
package org.xmind.ui.internal.mindmap;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.swt.accessibility.ACC;
import org.eclipse.swt.graphics.Point;
import org.xmind.gef.IViewer;
import org.xmind.gef.acc.AbstractGraphicalAccessible;
import org.xmind.gef.part.IPart;
import org.xmind.ui.mindmap.IBranchPart;
import org.xmind.ui.mindmap.ISheetPart;
public class SheetAccessible extends AbstractGraphicalAccessible {
public SheetAccessible(ISheetPart host) {
super(host);
}
public ISheetPart getHost() {
return (ISheetPart) super.getHost();
}
public String getName() {
return getHost().getSheet().getTitleText();
}
@Override
public Rectangle getLocation() {
IViewer viewer = getHost().getSite().getViewer();
Rectangle r = new Rectangle(viewer.getControl().getBounds());
Point p = viewer.getControl().toDisplay(r.x, r.y);
r.x = p.x;
r.y = p.y;
return r;
}
@Override
protected List<? extends IPart> getChildrenParts() {
IBranchPart central = getHost().getCentralBranch();
List<IBranchPart> floatingBranches = getHost().getFloatingBranches();
ArrayList<IPart> topics = new ArrayList<IPart>(floatingBranches.size()
+ (central == null ? 0 : 1));
if (central != null) {
topics.add(central.getTopicPart());
}
for (IBranchPart branch : floatingBranches) {
topics.add(branch.getTopicPart());
}
return topics;
}
@Override
public int getRole() {
return ACC.ROLE_TREE;
}
}