blob: 827f87624757edb04984c097e407dea286898dc0 [file] [log] [blame]
/**********************************************************************
* Copyright (c) 2017 Ericsson
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License 2.0 which
* accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
**********************************************************************/
package org.eclipse.tracecompass.tmf.ui.project.model;
import org.eclipse.core.runtime.Platform;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.jdt.annotation.Nullable;
import org.eclipse.swt.graphics.Image;
import org.osgi.framework.Bundle;
/**
* Singleton class to access the project model preferences of Trace Compass.
*
* This preference allows for customization of project model element label and
* icon.
*
* @author Bernd Hufmann
* @since 3.2
*/
public final class TmfProjectModelPreferences {
private static final @NonNull String DEFAULT_LABEL_NAME = "Trace Compass"; //$NON-NLS-1$
private static final @NonNull Image TRACECOMPASS_ICON = TmfProjectModelIcons.TRACECOMPASS_ICON;
private static String fProjectModelLabel = DEFAULT_LABEL_NAME;
private static Image fProjectModelIcon = null;
/**
* Private constructor
*/
private TmfProjectModelPreferences() {
}
/**
* Sets the preference of the project model element label
*
* @param bundleSymbolicName
* the symbolic name of the bundle defining the icon
* @param label
* the label
*/
public static synchronized void setProjectModelLabel(@NonNull String bundleSymbolicName, @NonNull String label) {
Bundle bundle = Platform.getBundle(bundleSymbolicName);
if (bundle == null) {
return;
}
fProjectModelLabel = label;
}
/**
* Sets the preference of the project model element icon
*
* @param bundleSymbolicName
* the symbolic name of the bundle defining the icon
* @param iconPath
* the icon relative path to the bundle root
*/
public static synchronized void setProjectModelIcon(@NonNull String bundleSymbolicName, @NonNull String iconPath) {
Bundle bundle = Platform.getBundle(bundleSymbolicName);
Image icon = TmfProjectModelIcons.loadIcon(bundle, iconPath);
if (icon != null) {
fProjectModelIcon = icon;
}
}
/**
* Get the preference value of the project model element label
*
* @return the label of the project model element
*/
public static synchronized @NonNull String getProjectModelLabel() {
String label = fProjectModelLabel;
if (label == null) {
return DEFAULT_LABEL_NAME;
}
return label;
}
/**
* Get the preference value of the project model element icon
*
* @return the image object of the project element icon
*/
public static synchronized @Nullable Image getProjectModelIcon() {
Image image = fProjectModelIcon;
if (image == null) {
return TRACECOMPASS_ICON;
}
return image;
}
}