1765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/******************************************************************************* 2765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Copyright (c) 2011 Google, Inc. 3765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * All rights reserved. This program and the accompanying materials 4765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * are made available under the terms of the Eclipse Public License v1.0 5765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * which accompanies this distribution, and is available at 6765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * http://www.eclipse.org/legal/epl-v10.html 7765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 8765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Contributors: 9765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Google, Inc. - initial API and implementation 10765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye *******************************************************************************/ 11765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepackage org.eclipse.wb.internal.core.model.property.editor; 12765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 13765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.SWT; 14765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.events.KeyEvent; 15765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.graphics.GC; 16765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.graphics.Point; 17765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.graphics.Rectangle; 18765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.widgets.Composite; 19765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.swt.widgets.Control; 20765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.Property; 21765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.editor.presentation.PropertyEditorPresentation; 22765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyeimport org.eclipse.wb.internal.core.model.property.table.PropertyTable; 23765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 24765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye/** 25765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Abstract editor for {@link Property}. 26765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 27765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @author scheglov_ke 28765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @coverage core.model.property.editor 29765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 30765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbyepublic abstract class PropertyEditor { 31765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 32765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 33765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Presentation 34765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 35765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 36765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 37765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return the instance of {@link PropertyEditorPresentation}. 38765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 39765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public PropertyEditorPresentation getPresentation() { 40765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return null; 41765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 42765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 43765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 44765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Paints given {@link Property} given rectangle <code>(x, y, width, height)</code> of {@link GC}. 45765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 46765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public abstract void paint(Property property, GC gc, int x, int y, int width, int height) 47765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye throws Exception; 48765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 49765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 50765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 51765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // Editing 52765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 53765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 54765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 55765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Activates editor for given {@link Property} at given place of {@link Composite}. Activation 56765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * happens when user selects property in {@link PropertyTable}. {@link PropertyEditor} should 57765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * create here any {@link Control}'s required to edit {@link Property}. 58765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 59765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * If any exception happens, {@link PropertyEditor} will be deactivated. 60765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 61765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @param location 62765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * the mouse location, if editor is activated using mouse click, or <code>null</code> if 63765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * it is activated using keyboard. 64765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 65765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @return <code>true</code> if editor should be remembered as active for future 66765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * {@link #setBounds(Rectangle)} and {@link #deactivate(boolean)} invocation. Some editors 67765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * need such local activation (for example for String), some - not (for boolean). 68765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 69765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public boolean activate(PropertyTable propertyTable, Property property, Point location) 70765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye throws Exception { 71765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return false; 72765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 73765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 74765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 75765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Sets the new bounds for editor's control. 76765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 77765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void setBounds(Rectangle bounds) { 78765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 79765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 80765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 81765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Deactivates editor for current {@link Property}. {@link PropertyEditor} should dispose any 82765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * {@link Control}'s created before in {@link #activate(PropertyTable, Property, Point)}. 83765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 84765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * If any exception happened during activation, editor still should be able to deactivate 85765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * correctly. 86765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 87765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @param save 88765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * is <code>true</code> if property should save value to {@link Property}. 89765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 90765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void deactivate(PropertyTable propertyTable, Property property, boolean save) { 91765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 92765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 93765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 94765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Handles double click on {@link Property} value in {@link PropertyTable}. 95765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * 96765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * @param location 97765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * the mouse location, relative to editor 98765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 99765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void doubleClick(Property property, Point location) throws Exception { 100765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 101765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 102765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye /** 103765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye * Handles {@link SWT#KeyDown} event in {@link PropertyTable}. 104765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye */ 105765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public void keyDown(PropertyTable propertyTable, Property property, KeyEvent event) 106765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye throws Exception { 107765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 108765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye 109765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 110765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 111765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // IAdaptable 112765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye // 113765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye //////////////////////////////////////////////////////////////////////////// 114765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye public <T> T getAdapter(Class<T> adapter) { 115765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye return null; 116765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye } 117765e52e2d30d0754625b8c7af6c36e93612f15beTor Norbye} 118