| /* |
| * Copyright 2011 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.editor.client.impl; |
| |
| /** |
| * An implementation of {@code EditorContext} that is used as a starting point |
| * by EditorDrivers. |
| * |
| * @param <T> the type of data being edited |
| */ |
| public class RootEditorContext<T> extends AbstractEditorContext<T> { |
| |
| private final Class<T> editedType; |
| private final T value; |
| |
| public RootEditorContext(AbstractEditorDelegate<T, ?> editorDelegate, |
| Class<T> editedType, T value) { |
| super(editorDelegate.getEditor(), editorDelegate.getPath()); |
| setEditorDelegate(editorDelegate); |
| this.editedType = editedType; |
| this.value = value; |
| } |
| |
| @Override |
| public boolean canSetInModel() { |
| return true; |
| } |
| |
| /** |
| * Returns {@code value}. There's no way to actually implement this check in |
| * GWT client-side code. In order to prevent users from having to check for |
| * the root context in a visitor to avoid a special case, we'll just return |
| * the object. If the value really isn't assignable to T, a call to |
| * {@link #setInModel(Object)} will fail in the generated code, which has an |
| * explicit cast. |
| */ |
| @Override |
| @SuppressWarnings("unchecked") |
| public T checkAssignment(Object value) { |
| return (T) value; |
| } |
| |
| @Override |
| public Class<T> getEditedType() { |
| return editedType; |
| } |
| |
| @Override |
| public T getFromModel() { |
| return value; |
| } |
| |
| @Override |
| @SuppressWarnings("unchecked") |
| public void setInModel(T data) { |
| ((AbstractEditorDelegate<T, ?>) getEditorDelegate()).setObject(data); |
| } |
| } |