blob: 554bab794cd13cfbd1fe1ea1b2b15918c858ebc6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 Oracle Corporation and others.
* 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:
* Oracle Corporation - initial API and implementation and/or initial documentation
*******************************************************************************/
package org.eclipse.jst.pagedesigner.dtmanager.converter.operations.internal;
import org.eclipse.core.runtime.Assert;
import org.eclipse.jst.pagedesigner.converter.IConverterFactory;
import org.eclipse.jst.pagedesigner.dtmanager.converter.internal.DTTagConverterContext;
import org.eclipse.jst.pagedesigner.dtmanager.converter.operations.AbstractTransformOperation;
import org.w3c.dom.Element;
/**
* Transform operation that executes child ITransformOperation
* instances if the view mode matches the argument (parameter) provided.
*
* <br><b>Note:</b> requires ITransformOperation.setTagConverterContext() to
* have been called to provide a valid ITagConverterContext instance prior to
* a call to the transform() method.
*/
public class CheckModeOperation extends AbstractTransformOperation {
/**
* Constant indicating the current render mode is design
*/
public static final String MODE_DESIGN = "design"; //$NON-NLS-1$
/**
* Constant indicating the current render mode is preview
*/
public static final String MODE_PREVIEW = "preview"; //$NON-NLS-1$
/*
* (non-Javadoc)
* @see org.eclipse.jst.pagedesigner.dtmanager.converter.ITransformOperation#transform(org.w3c.dom.Element, org.w3c.dom.Element)
*/
@Override
public Element transform(Element srcElement, Element curElement) {
if (getParameters().length < 1) {
getLog().error("Warning.TransformOperationFactory.TooFewParameters", //$NON-NLS-1$
getTransformOperationID());
return null;
}
String modeParam = getParameters()[0];
Assert.isNotNull(modeParam);
int currentMode = getMode();
if ((MODE_DESIGN.equals(modeParam) && currentMode == IConverterFactory.MODE_DESIGNER)
|| (MODE_PREVIEW.equals(modeParam) && currentMode == IConverterFactory.MODE_PREVIEW)) {
return executeChildOperations(srcElement, curElement);
}
// if we haven't transformed the element at all, and this is
// just the initial transform, return null
if (srcElement == curElement) {
return null;
}
// otherwise, return the currently transformed element
return curElement;
}
/**
* @return the converter mode. If unable to get the mode, return -1.
*/
protected int getMode() {
if (tagConverterContext != null
&& tagConverterContext instanceof DTTagConverterContext) {
return ((DTTagConverterContext) tagConverterContext).getMode();
}
return -1;
}
}