| /******************************************************************************* |
| * 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; |
| } |
| |
| } |