/*******************************************************************************
* Copyright (C) 2003-2005, 2013, Guillaume Brocker
*
* 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:
* Guillaume Brocker - Initial API and implementation
*
******************************************************************************/
package eclox.ui.editor.advanced;
import java.util.HashMap;
import java.util.Map;
import eclox.core.doxyfiles.Setting;
import eclox.ui.Plugin;
import eclox.ui.editor.editors.BooleanEditor;
import eclox.ui.editor.editors.DirectoryEditor;
import eclox.ui.editor.editors.DirectoryListEditor;
import eclox.ui.editor.editors.FileEditor;
import eclox.ui.editor.editors.PathListEditor;
import eclox.ui.editor.editors.TextEditor;
import eclox.ui.editor.editors.TextListEditor;
/**
* An instance of this class registers all setting editor classes by setting type.
*
* @author gbrocker
*/
public class EditorClassRegister {
/**
* The map registering all editor classes.
*/
private Map<String, Class<?>> register = new HashMap<String, Class<?>>();
/**
* Constructor.
*/
public EditorClassRegister() {
register.put( "file", FileEditor.class );
register.put( "directory", DirectoryEditor.class );
register.put( "text", TextEditor.class );
register.put( "boolean", BooleanEditor.class );
register.put( "text list", TextListEditor.class );
register.put( "directory list", DirectoryListEditor.class );
register.put( "path list", PathListEditor.class );
}
/**
* Retrieves a class for the specified setting.
*
* @param setting a setting for which an editor must be retrieved
*
* @return a setting editor class
*/
public Class<?> find(Setting setting) {
// Retrieves the editor class for that type
String type = setting.getProperty( Setting.TYPE );
Class<?> result = (Class<?>) register.get(type);
// Little fallback if no matching editor class was found.
if(result == null) {
Plugin.log(setting.getIdentifier() + ": missing or wrong TYPE property.");
result = TextEditor.class;
}
return result;
}
}