protected FilterAction loadAction(Node node)
	{
		NamedNodeMap attrs = node.getAttributes();
		Node type = attrs.getNamedItem("type");
		if (type.getNodeValue().equals("highlight")) {
			// Is this the best way to get a Display?
			Display d = LogwatcherPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getShell().getDisplay();

			NodeList children = node.getChildNodes();
			Color fgColor = null;
			Color bgColor = null;
			for (int i = 0; i < children.getLength(); i++) {
				Node colorNode = children.item(i);
				String name = colorNode.getNodeName();
				if (name.equals("fgColor")) {
					fgColor = createColorFromNode(d, colorNode);
				}
				else if (name.equals("bgColor")) {
					bgColor = createColorFromNode(d, colorNode);
				}
			}

			return new HighlightAction(fgColor, bgColor);
		}
		else if (type.getNodeValue().equals("ignore")) {
			return new IgnoreAction();
		}
		else if (type.getNodeValue().equals("task")) {
			NodeList children = node.getChildNodes();
			String desc = "";
			int priority = 0;
			for (int i = 0; i < children.getLength(); i++) {
				Node n = children.item(i);
				String name = n.getNodeName();
				if (name.equals("taskDescription")) {
					desc = n.getFirstChild().getNodeValue();
				}
				else if (name.equals("priority")) {
					priority = Integer.parseInt(n.getFirstChild().getNodeValue());
				}
			}
			return new AddTaskAction(desc, priority, LogwatcherPlugin.getWorkspace().getRoot());
		}
		else {
			LogwatcherPlugin.getDefault().logError("Invalid action type: " + type, null);
			return null;
		}
	}