summaryrefslogtreecommitdiff
path: root/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/PropertyEditor.java
diff options
context:
space:
mode:
Diffstat (limited to 'propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/PropertyEditor.java')
-rw-r--r--propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/PropertyEditor.java117
1 files changed, 117 insertions, 0 deletions
diff --git a/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/PropertyEditor.java b/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/PropertyEditor.java
new file mode 100644
index 0000000..fd2fa8f
--- /dev/null
+++ b/propertysheet/src/org/eclipse/wb/internal/core/model/property/editor/PropertyEditor.java
@@ -0,0 +1,117 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Google, Inc.
+ * 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:
+ * Google, Inc. - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wb.internal.core.model.property.editor;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.wb.internal.core.model.property.Property;
+import org.eclipse.wb.internal.core.model.property.editor.presentation.PropertyEditorPresentation;
+import org.eclipse.wb.internal.core.model.property.table.PropertyTable;
+
+/**
+ * Abstract editor for {@link Property}.
+ *
+ * @author scheglov_ke
+ * @coverage core.model.property.editor
+ */
+public abstract class PropertyEditor {
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Presentation
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * @return the instance of {@link PropertyEditorPresentation}.
+ */
+ public PropertyEditorPresentation getPresentation() {
+ return null;
+ }
+
+ /**
+ * Paints given {@link Property} given rectangle <code>(x, y, width, height)</code> of {@link GC}.
+ */
+ public abstract void paint(Property property, GC gc, int x, int y, int width, int height)
+ throws Exception;
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Editing
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ /**
+ * Activates editor for given {@link Property} at given place of {@link Composite}. Activation
+ * happens when user selects property in {@link PropertyTable}. {@link PropertyEditor} should
+ * create here any {@link Control}'s required to edit {@link Property}.
+ *
+ * If any exception happens, {@link PropertyEditor} will be deactivated.
+ *
+ * @param location
+ * the mouse location, if editor is activated using mouse click, or <code>null</code> if
+ * it is activated using keyboard.
+ *
+ * @return <code>true</code> if editor should be remembered as active for future
+ * {@link #setBounds(Rectangle)} and {@link #deactivate(boolean)} invocation. Some editors
+ * need such local activation (for example for String), some - not (for boolean).
+ */
+ public boolean activate(PropertyTable propertyTable, Property property, Point location)
+ throws Exception {
+ return false;
+ }
+
+ /**
+ * Sets the new bounds for editor's control.
+ */
+ public void setBounds(Rectangle bounds) {
+ }
+
+ /**
+ * Deactivates editor for current {@link Property}. {@link PropertyEditor} should dispose any
+ * {@link Control}'s created before in {@link #activate(PropertyTable, Property, Point)}.
+ *
+ * If any exception happened during activation, editor still should be able to deactivate
+ * correctly.
+ *
+ * @param save
+ * is <code>true</code> if property should save value to {@link Property}.
+ */
+ public void deactivate(PropertyTable propertyTable, Property property, boolean save) {
+ }
+
+ /**
+ * Handles double click on {@link Property} value in {@link PropertyTable}.
+ *
+ * @param location
+ * the mouse location, relative to editor
+ */
+ public void doubleClick(Property property, Point location) throws Exception {
+ }
+
+ /**
+ * Handles {@link SWT#KeyDown} event in {@link PropertyTable}.
+ */
+ public void keyDown(PropertyTable propertyTable, Property property, KeyEvent event)
+ throws Exception {
+ }
+
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // IAdaptable
+ //
+ ////////////////////////////////////////////////////////////////////////////
+ public <T> T getAdapter(Class<T> adapter) {
+ return null;
+ }
+}