All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.swt.accessibility.AccessibleTableColumn Maven / Gradle / Ivy

Go to download

The osx x86_64 swt jar as available in the Eclipse 4.6 (Neon) release for OSX. It is suitable for use with jface and other dependencies available from maven central in the org.eclipse.scout.sdk.deps group. The sources is copied from swt-4.6-cocoa-macosx-x86_64.zip from http://download.eclipse.org/eclipse/downloads/drops4/R-4.6-201606061100/ and javadoc is generated from sources.

The newest version!
/*******************************************************************************
 * Copyright (c) 2010 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.swt.accessibility;

import org.eclipse.swt.internal.cocoa.*;

/**
 * This class is used to describe a table column for objects that have an accessible
 * role of ACC.ROLE_TABLE, but aren't implemented like NSTableViews.
 *
 * Instances of this class represent one column in a table. Cocoa accessibility expects
 * columns to report their location, number of rows, and elements in those rows.
 *
 * @see TableAccessibleDelegate
 */
class AccessibleTableColumn extends Accessible {

	public AccessibleTableColumn(Accessible accessible, int childID) {
		super(accessible);
		index = childID;

		addAccessibleControlListener(new AccessibleControlAdapter() {
			@Override
			public void getLocation(AccessibleControlEvent e) {
				Accessible[] cells = AccessibleTableColumn.this.getColumnCells();

				// Ask first row for position.
				AccessibleControlEvent event = new AccessibleControlEvent(this);
				event.childID = ACC.CHILDID_SELF;
				event.width = -1;
				Accessible child = cells[0];

				for (int i = 0; i < child.accessibleControlListeners.size(); i++) {
					AccessibleControlListener listener = child.accessibleControlListeners.get(i);
					listener.getLocation(event);
				}

				// Ask all children for size.
				int height = 0;
				int width = 0;
				for (int j = 0; j < cells.length; j++) {
					NSValue sizeObj = (NSValue)cells[j].getSizeAttribute(ACC.CHILDID_SELF);
					NSSize size = sizeObj.sizeValue();
					if (size.width > width) width = (int) size.width;
					height += size.height;
				}

				e.x = event.x;
				e.y = event.y;
				e.width = width;
				e.height = height;
			}
			@Override
			public void getRole(AccessibleControlEvent e) {
				e.detail = ACC.ROLE_COLUMN;
			}
		});
		addAccessibleTableListener(new AccessibleTableAdapter() {
			@Override
			public void getRowCount(AccessibleTableEvent e) {
				e.count = getColumnCells().length;
			}
			@Override
			public void getRow(AccessibleTableEvent e) {
				int index = e.row;
				Accessible[] children = getColumnCells();
				int count = children.length;
				if (0 <= index && index < count) {
					e.accessible = children[index];
				}
			}
			@Override
			public void getRows(AccessibleTableEvent e) {
				e.accessibles = getColumnCells();
			}
		});
	}

	private Accessible[] getColumnCells() {
		int validRowCount = Math.max (1, parent.getRowCount());
		Accessible[] cells = new Accessible[validRowCount];
		AccessibleTableEvent event = new AccessibleTableEvent(this);
		for (int i = 0; i < validRowCount; i++) {
			event.column = index;
			event.row = i;

			for (int j = 0; j < parent.accessibleTableListeners.size(); j++) {
				AccessibleTableListener listener = parent.accessibleTableListeners.get(j);
				listener.getCell(event);
			}

			cells[i] = event.accessible;
		}
		return cells;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy