/*****************************************************************
* Copyright (c) 2011 Texas Instruments 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:
* Winnie Lai (Texas Instruments) - Individual Element Number Format example (Bug 202556)
*****************************************************************/
package org.eclipse.cdt.examples.dsf.pda.ui.viewmodel;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.IPersistableElement;
/**
* Variable persistable for variable settings
*/
class VariablePersistable implements IPersistableElement, IAdaptable {
HashMap<String, String> map = new HashMap<String, String>();
public void saveState(IMemento memento) {
HashMap<String, String> clone = null;
synchronized (map) {
clone = new HashMap<String, String>(map);
}
Iterator<Entry<String, String> > it = clone.entrySet().iterator();
while (it.hasNext()) {
Entry<String, String> entry = it.next();
IMemento value = memento.createChild("variable", entry.getKey());
value.putString("format", entry.getValue());
}
}
void restore(IMemento memento) {
IMemento[] list = memento.getChildren("variable");
HashMap<String, String> clone = new HashMap<String, String>();
for (int i = 0; i < list.length; i++) {
clone.put(list[i].getID(), list[i].getString("format"));
}
synchronized(map) {
map.clear();
map.putAll(clone);
}
}
String getFormat(String key) {
if (key == null)
return null;
synchronized (map) {
return map.get(key);
}
}
void setFormat(String key, String format) {
synchronized (map) {
if (format == null) {
map.remove(key);
} else {
map.put(key, format);
}
}
}
public String getFactoryId() {
return VariablePersistableFactory.getFactoryId();
}
public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
if (adapter.isInstance(this)) {
return this;
}
return null;
}
}