/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Eclipse Public License, Version 1.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.eclipse.org/org/documents/epl-v10.php
*
* 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.android.ide.eclipse.adt.internal.resources.configurations;
import com.android.ide.eclipse.adt.internal.editors.IconFactory;
import com.android.resources.DockMode;
import com.android.resources.ResourceEnum;
import org.eclipse.swt.graphics.Image;
/**
* Resource Qualifier for Navigation Method.
*/
public final class DockModeQualifier extends EnumBasedResourceQualifier {
public static final String NAME = "Dock Mode";
private DockMode mValue;
public DockModeQualifier() {
// pass
}
public DockModeQualifier(DockMode value) {
mValue = value;
}
public DockMode getValue() {
return mValue;
}
@Override
ResourceEnum getEnumValue() {
return mValue;
}
@Override
public String getName() {
return NAME;
}
@Override
public String getShortName() {
return "Dock Mode";
}
@Override
public Image getIcon() {
return IconFactory.getInstance().getIcon("dockmode"); //$NON-NLS-1$
}
@Override
public boolean checkAndSet(String value, FolderConfiguration config) {
DockMode mode = DockMode.getEnum(value);
if (mode != null) {
DockModeQualifier qualifier = new DockModeQualifier(mode);
config.setDockModeQualifier(qualifier);
return true;
}
return false;
}
@Override
public boolean isMatchFor(ResourceQualifier qualifier) {
// only NONE is a match other DockModes
if (mValue == DockMode.NONE) {
return true;
}
// others must be an exact match
return ((DockModeQualifier)qualifier).mValue == mValue;
}
@Override
public boolean isBetterMatchThan(ResourceQualifier compareTo, ResourceQualifier reference) {
if (compareTo == null) {
return true;
}
DockModeQualifier compareQualifier = (DockModeQualifier)compareTo;
DockModeQualifier referenceQualifier = (DockModeQualifier)reference;
if (compareQualifier.getValue() == referenceQualifier.getValue()) {
// what we have is already the best possible match (exact match)
return false;
} else if (mValue == referenceQualifier.mValue) {
// got new exact value, this is the best!
return true;
} else if (mValue == DockMode.NONE) {
// else "none" can be a match in case there's no exact match
return true;
}
return false;
}
}