///******************************************************************************* // * Copyright (c) 2007 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.jface.viewers; // //import org.eclipse.core.runtime.Assert; //import org.eclipse.swt.SWT; //import org.eclipse.swt.graphics.Point; //import org.eclipse.swt.widgets.Event; //import org.eclipse.swt.widgets.Listener; // ///** // * This class is responsible to provide cell management base features for the // * SWT-Controls {@link org.eclipse.swt.widgets.Table} and // * {@link org.eclipse.swt.widgets.Tree}. // * // * @since 1.0 // * // */ //abstract class SWTFocusCellManager { // // private CellNavigationStrategy navigationStrategy; // // private ColumnViewer viewer; // // private ViewerCell focusCell; // // private FocusCellHighlighter cellHighlighter; // // /** // * @param viewer // * @param focusDrawingDelegate // * @param navigationDelegate // */ // public SWTFocusCellManager(ColumnViewer viewer, // FocusCellHighlighter focusDrawingDelegate, // CellNavigationStrategy navigationDelegate) { // this.viewer = viewer; // this.cellHighlighter = focusDrawingDelegate; // this.navigationStrategy = navigationDelegate; // hookListener(viewer); // } // // /** // * This method is called by the framework to initialize this cell manager. // */ // void init() { // this.cellHighlighter.init(); // this.navigationStrategy.init(); // } // // private void handleMouseDown(Event event) { // ViewerCell cell = viewer.getCell(new Point(event.x, event.y)); // if (cell != null) { // // if (!cell.equals(focusCell)) { // setFocusCell(cell); // } // } // } // // private void handleKeyDown(Event event) { // ViewerCell tmp = null; // // if (navigationStrategy.isCollapseEvent(viewer, focusCell, event)) { // navigationStrategy.collapse(viewer, focusCell, event); // } else if (navigationStrategy.isExpandEvent(viewer, focusCell, event)) { // navigationStrategy.expand(viewer, focusCell, event); // } else if (navigationStrategy.isNavigationEvent(viewer, event)) { // tmp = navigationStrategy.findSelectedCell(viewer, focusCell, event); // // if (tmp != null) { // if (!tmp.equals(focusCell)) { // setFocusCell(tmp); // } // } // } // // if (navigationStrategy.shouldCancelEvent(viewer, event)) { // event.doit = false; // } // } // // private void handleSelection(Event event) { // if (focusCell != null && focusCell.getItem() != event.item // && event.item != null) { // ViewerRow row = viewer.getViewerRowFromItem(event.item); // Assert // .isNotNull(row, // "Internal Structure invalid. Row item has no row ViewerRow assigned"); //$NON-NLS-1$ // ViewerCell tmp = row.getCell(focusCell.getColumnIndex()); // if (!focusCell.equals(tmp)) { // setFocusCell(tmp); // } // } // } // // private void handleFocusIn(Event event) { // if (focusCell == null) { // setFocusCell(getInitialFocusCell()); // } // } // // abstract ViewerCell getInitialFocusCell(); // // private void hookListener(ColumnViewer viewer) { // Listener listener = new Listener() { // // public void handleEvent(Event event) { // switch (event.type) { // case SWT.MouseDown: // handleMouseDown(event); // break; // case SWT.KeyDown: // handleKeyDown(event); // break; // case SWT.Selection: // handleSelection(event); // break; // case SWT.FocusIn: // handleFocusIn(event); // break; // } // } // }; // // viewer.getControl().addListener(SWT.MouseDown, listener); // viewer.getControl().addListener(SWT.KeyDown, listener); // viewer.getControl().addListener(SWT.Selection, listener); // viewer.getControl().addListener(SWT.FocusIn, listener); // } // // /** // * @return the cell with the focus // * // */ // public ViewerCell getFocusCell() { // return focusCell; // } // // void setFocusCell(ViewerCell focusCell) { // this.focusCell = focusCell; // this.cellHighlighter.focusCellChanged(focusCell); // } // // ColumnViewer getViewer() { // return viewer; // } //}