public class GECache implements IGECache {
- final Map<GECacheKey, IGECacheEntry> entries = new THashMap<GECacheKey, IGECacheEntry>();
- final Map<GECacheKey, Set<UIElementReference>> treeReferences = new THashMap<GECacheKey, Set<UIElementReference>>();
+ final Map<GECacheKey, IGECacheEntry> entries = new THashMap<>();
+ final Map<GECacheKey, Set<UIElementReference>> treeReferences = new THashMap<>();
final private static class GECacheKey {
private NodeContext context;
private CacheKey<?> key;
+ private int hash;
GECacheKey(NodeContext context, CacheKey<?> key) {
- this.context = context;
- this.key = key;
- if (context == null || key == null)
- throw new IllegalArgumentException("Null context or key is not accepted");
+ setValues(context, key);
}
GECacheKey(GECacheKey other) {
- this.context = other.context;
- this.key = other.key;
- if (context == null || key == null)
- throw new IllegalArgumentException("Null context or key is not accepted");
+ setValues(other.context, other.key);
}
void setValues(NodeContext context, CacheKey<?> key) {
+ if (context == null || key == null)
+ throw new IllegalArgumentException("Null context or key is not accepted");
this.context = context;
this.key = key;
- if (context == null || key == null)
- throw new IllegalArgumentException("Null context or key is not accepted");
+ this.hash = calcHash();
+ }
+
+ private int calcHash() {
+ return (31 * context.hashCode()) + key.hashCode();
}
@Override
public int hashCode() {
- return context.hashCode() | key.hashCode();
+ return hash;
}
@Override
}
+ @Override
+ public String toString() {
+ return String.format("%s@%d [key=%s, context=%s]", getClass().getSimpleName(), System.identityHashCode(this), key, context); //$NON-NLS-1$
+ }
+
};
/**
public <T> T get(NodeContext context, CacheKey<T> key) {
getKey.setValues(context, key);
IGECacheEntry entry = entries.get(getKey);
- if (entry == null)
- return null;
- return (T) entry.getValue();
+ return entry != null ? (T) entry.getValue() : null;
}
@Override
return references.get(context) > 0;
}
- private TObjectIntHashMap<NodeContext> references = new TObjectIntHashMap<NodeContext>();
+ private TObjectIntHashMap<NodeContext> references = new TObjectIntHashMap<>();
@Override
synchronized public void incRef(NodeContext context) {
while (jp.nextToken() != JsonToken.END_OBJECT) {
String fieldName = jp.getCurrentName();
jp.nextToken();
+ if (fieldName == null)
+ continue;
+
if (fieldName.equals("uri")) {
uri = jp.getValueAsString();
} else if (fieldName.equals("type")) {
private static final String DIALOG = "AssignSymbolGroupsDialog"; //$NON-NLS-1$
- static String SELECT_ALL_TITLE = ""; //$NON-NLS-1$
-
- static String DESELECT_ALL_TITLE = ""; //$NON-NLS-1$
-
// the root element to populate the viewer with
protected Object inputElement;
if (message != null) {
setMessage(message);
} else {
- setMessage(""); //$NON-NLS-1$
+ setMessage(WorkbenchMessages.ListSelection_message);
}
IDialogSettings settings = Activator.getDefault().getDialogSettings();
buttonComposite.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, true));
Button selectButton = createButton(buttonComposite,
- IDialogConstants.SELECT_ALL_ID, SELECT_ALL_TITLE, false);
+ IDialogConstants.SELECT_ALL_ID, WorkbenchMessages.SelectionDialog_selectLabel, false);
SelectionListener listener = new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
selectButton.addSelectionListener(listener);
Button deselectButton = createButton(buttonComposite,
- IDialogConstants.DESELECT_ALL_ID, DESELECT_ALL_TITLE, false);
+ IDialogConstants.DESELECT_ALL_ID, WorkbenchMessages.SelectionDialog_deselectLabel, false);
listener = new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
Label label = new Label(buttonComposite, SWT.NONE);
Button newButton = createButton(buttonComposite,
- IDialogConstants.INTERNAL_ID-1, org.simantics.modeling.ui.actions.WorkbenchMessages.AssignSymbolGroupsDialog_NewDots, false);
+ IDialogConstants.INTERNAL_ID-1, org.simantics.modeling.ui.actions.WorkbenchMessages.AssignSymbolGroupsDialog_New, false);
listener = new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
newButton.addSelectionListener(listener);
Button removeButton = createButton(buttonComposite,
- IDialogConstants.INTERNAL_ID-2, org.simantics.modeling.ui.actions.WorkbenchMessages.AssignSymbolGroupsDialog_RemoveAnd, false);
+ IDialogConstants.INTERNAL_ID-2, org.simantics.modeling.ui.actions.WorkbenchMessages.AssignSymbolGroupsDialog_Remove, false);
listener = new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
public class WorkbenchMessages extends NLS {
private static final String BUNDLE_NAME = "org.simantics.modeling.ui.actions.messages"; //$NON-NLS-1$
- public static String AssignSymbolGroupsDialog_NewDots;
- public static String AssignSymbolGroupsDialog_RemoveAnd;
+ public static String AssignSymbolGroupsDialog_New;
+ public static String AssignSymbolGroupsDialog_Remove;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, WorkbenchMessages.class);
AssignSymbolGroup_SelectSymbolGroupsTheSelectedSymbolsAreShownIn=Select symbol groups the selected {0} symbols are shown in.
AssignSymbolGroup_SymbolGroupAssignments=Symbol Group Assignments
AssignSymbolGroup_WriteSymbolGroupName=Write the name of the new symbol group.
-AssignSymbolGroupsDialog_NewDots=&New...
-AssignSymbolGroupsDialog_RemoveAnd=&Remove
+AssignSymbolGroupsDialog_New=&New...
+AssignSymbolGroupsDialog_Remove=&Remove
CompilePGraphsAction_CompilePGraphs=Compile PGraphs
CompilePGraphsAction_Continue=Continue
CompilePGraphsAction_FollowingIssuesFound=The following issues were found: