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