01: /*******************************************************************************
02: * Copyright (c) 2006 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.ui.internal.cheatsheets.composite.parser;
11:
12: import org.eclipse.core.runtime.IStatus;
13: import org.eclipse.osgi.util.NLS;
14: import org.eclipse.ui.internal.cheatsheets.Messages;
15: import org.eclipse.ui.internal.cheatsheets.composite.model.AbstractTask;
16: import org.eclipse.ui.internal.cheatsheets.registry.CheatSheetRegistryReader;
17: import org.w3c.dom.Node;
18:
19: public class EditableTaskParseStrategy implements ITaskParseStrategy {
20:
21: private boolean editableChildErrorReported;
22:
23: public void init() {
24: editableChildErrorReported = false;
25: }
26:
27: public boolean parseElementNode(Node childNode, Node parentNode,
28: AbstractTask parentTask, IStatusContainer status) {
29: boolean isElementHandled = true;
30: String nodeName = childNode.getNodeName();
31: if (CompositeCheatSheetParser.isAbstractTask(nodeName)) {
32: if (!editableChildErrorReported) {
33: editableChildErrorReported = true;
34: String message = NLS.bind(
35: Messages.ERROR_EDITABLE_TASK_WITH_CHILDREN,
36: (new Object[] { parentTask.getName() }));
37: status.addStatus(IStatus.ERROR, message, null);
38: }
39: } else {
40: isElementHandled = false;
41: }
42: return isElementHandled;
43: }
44:
45: public void parsingComplete(AbstractTask parentTask,
46: IStatusContainer status) {
47: if (parentTask.getKind() == null) {
48: String message = NLS.bind(
49: Messages.ERROR_PARSING_TASK_NO_KIND,
50: (new Object[] { parentTask.getName() }));
51: status.addStatus(IStatus.ERROR, message, null);
52: } else if (CheatSheetRegistryReader.getInstance()
53: .findTaskEditor(parentTask.getKind()) == null) {
54: String message = NLS.bind(
55: Messages.ERROR_PARSING_TASK_INVALID_KIND,
56: (new Object[] { parentTask.getKind(),
57: ICompositeCheatsheetTags.TASK,
58: parentTask.getName() }));
59: status.addStatus(IStatus.ERROR, message, null);
60: }
61: }
62:
63: }
|