/*
* Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License, Version 1.0,
* which accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*
*/
package net.rim.ejde.internal.model.preferences;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.rim.ejde.internal.core.ContextManager;
import net.rim.ejde.internal.core.IConstants;
import net.rim.ejde.internal.ui.dialogs.CleanSimulatorTreeItem;
import net.rim.ejde.internal.ui.dialogs.CleanSimulatorTreeItem.ItemType;
import net.rim.ejde.internal.ui.dialogs.CleanSimulatorTreeItemExternal;
import net.rim.ejde.internal.ui.dialogs.CleanSimulatorTreeItemInternal;
import net.rim.ejde.internal.ui.preferences.PreferenceConstants;
import org.eclipse.jface.preference.IPreferenceStore;
/**
*
* @author bkurz
*
*/
public class CleanSimulatorPreferences {
static IPreferenceStore store = ContextManager.getDefault().getPreferenceStore();
public static List< CleanSimulatorTreeItem > getCleanSimulatorPreferences( List< CleanSimulatorTreeItem > inputItems ) {
for( CleanSimulatorTreeItem item : inputItems ) {
if( item.hasChildItems() ) {
getCleanSimulatorPreferences( Arrays.asList( item.getChildItems() ) );
}
item.setChecked( store.getBoolean( PreferenceConstants.CLEAN_SIMULATOR_PREFERENCE_PREFIX + getSDKName( item ) + "-"
+ item.getItemID() ) );
}
return inputItems;
}
/**
*
* @param items
*/
public static void setCleanSimulatorPreferences( List< CleanSimulatorTreeItem > items ) {
Map< String, Boolean > preferenceTable = new HashMap< String, Boolean >();
preferenceTable = createCleanSimulatorPreferenceTable( items, preferenceTable );
for( String key : preferenceTable.keySet() ) {
store.setValue( PreferenceConstants.CLEAN_SIMULATOR_PREFERENCE_PREFIX + key, preferenceTable.get( key ) );
}
}
private static Map< String, Boolean > createCleanSimulatorPreferenceTable( List< CleanSimulatorTreeItem > items,
Map< String, Boolean > preferenceTable ) {
for( CleanSimulatorTreeItem item : items ) {
if( item.hasChildItems() ) {
createCleanSimulatorPreferenceTable( Arrays.asList( item.getChildItems() ), preferenceTable );
}
preferenceTable.put( getSDKName( item ) + "-" + item.getItemID(), item.isChecked() );
}
return preferenceTable;
}
private static String getSDKName( CleanSimulatorTreeItem item ) {
if( item.getItemType().equals( ItemType.INTERNAL_BUNDLE ) ) {
CleanSimulatorTreeItemInternal internalItem = (CleanSimulatorTreeItemInternal) item;
return internalItem.getVMInstall().getName();
} else if( item.getItemType().equals( ItemType.EXTERNAL_BUNDLE ) ) {
CleanSimulatorTreeItemExternal externalItem = (CleanSimulatorTreeItemExternal) item;
return externalItem.getDeviceProfile().getBundleName();
}
return IConstants.EMPTY_STRING;
}
}