/******************************************************************************* * Copyright (c) 2005 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.bpel.common.ui.tray; import java.util.List; import java.util.Vector; import org.eclipse.draw2d.Label; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.gef.AccessibleEditPart; import org.eclipse.gef.EditPart; import org.eclipse.swt.accessibility.ACC; import org.eclipse.swt.accessibility.AccessibleControlEvent; import org.eclipse.swt.accessibility.AccessibleEvent; public class TrayAccessibleEditPart extends AccessibleEditPart { protected TrayEditPart part; public TrayAccessibleEditPart(TrayEditPart part) { super(); this.part = part; } @Override public void getChildCount(AccessibleControlEvent e) { getChildren(e); e.detail = e.children.length; } @Override public void getChildren(AccessibleControlEvent e) { List<EditPart> list = part.getChildren(); Vector<Integer> childList = new Vector<Integer>(); for (int i = 0; i < list.size(); i++) { EditPart child = list.get(i); AccessibleEditPart access = (AccessibleEditPart)child.getAdapter(AccessibleEditPart.class); if (access == null) continue; childList.add( Integer.valueOf( access.getAccessibleID())); } e.children = childList.toArray(); } @Override public void getName(AccessibleEvent e) { Label label = part.getDirectEditLabel(); if (label != null) { e.result = label.getText(); } else { e.result = null; } } @Override public void getLocation(AccessibleControlEvent e) { Rectangle bounds = part.getFigure().getBounds().getCopy(); part.getFigure().translateToAbsolute(bounds); org.eclipse.swt.graphics.Point p = new org.eclipse.swt.graphics.Point(0, 0); p = part.getViewer().getControl().toDisplay(p); e.x = bounds.x + p.x; e.y = bounds.y + p.y; e.width = bounds.width; e.height = bounds.height; } @Override public void getState(AccessibleControlEvent e) { e.detail = ACC.STATE_SELECTABLE | ACC.STATE_FOCUSABLE; if (part.getSelected() != EditPart.SELECTED_NONE) e.detail |= ACC.STATE_SELECTED; if (part.getViewer().getFocusEditPart() == part) e.detail = ACC.STATE_FOCUSED; } }