All Downloads are FREE. Search and download functionalities are using the official Maven repository.

se.europeanspallationsource.xaos.ui.spi.impl.DefaultCommonIconProvider Maven / Gradle / Ivy

Go to download

JavaFX-based portion of the XAOS framework, containing the JavaFX-based controls and tools suitable for other projects too.

The newest version!
/*
 * Copyright 2018 European Spallation Source ERIC.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package se.europeanspallationsource.xaos.ui.spi.impl;


import java.text.MessageFormat;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import javafx.scene.Node;
import org.kordamp.ikonli.Ikon;
import org.kordamp.ikonli.fontawesome.FontAwesome;
import org.kordamp.ikonli.javafx.FontIcon;
import org.kordamp.ikonli.materialdesign.MaterialDesign;
import se.europeanspallationsource.xaos.tools.annotation.ServiceProvider;
import se.europeanspallationsource.xaos.ui.control.CommonIcons;
import se.europeanspallationsource.xaos.ui.spi.IconProvider;


/**
 * Provides default icons (i.e. square {@link Node}s) for a given object key.
 *
 * @author [email protected]
 */
@SuppressWarnings( { "ClassWithoutLogger", "UseOfSystemOutOrSystemErr" } )
@ServiceProvider( service = IconProvider.class )
public class DefaultCommonIconProvider extends BaseProvider implements IconProvider {

	private static final Map ICONS_MAP;

	/**
	 * static initializer.
	 */
	static {

		Node icon;
		Map map = new HashMap<>(100);

		map.put(CommonIcons.BLUR_OFF, MaterialDesign.MDI_BLUR_OFF);
		map.put(CommonIcons.CHEVRON_DOWN, FontAwesome.CHEVRON_DOWN);
		map.put(CommonIcons.CHEVRON_LEFT, FontAwesome.CHEVRON_LEFT);
		map.put(CommonIcons.CHEVRON_RIGHT, FontAwesome.CHEVRON_RIGHT);
		map.put(CommonIcons.CHEVRON_UP, FontAwesome.CHEVRON_UP);
		map.put(CommonIcons.COPY, FontAwesome.COPY);
		map.put(CommonIcons.CUT, FontAwesome.CUT);
		map.put(CommonIcons.DELETE, FontAwesome.REMOVE);
		map.put(CommonIcons.FILE, FontAwesome.FILE_O);
		map.put(CommonIcons.FILE_EXECUTABLE, FontAwesome.PLAY_CIRCLE_O);
		map.put(CommonIcons.FILE_HIDDEN, FontAwesome.FILE);
		map.put(CommonIcons.FILE_IMAGE, FontAwesome.FILE_IMAGE_O);
		map.put(CommonIcons.FILE_LINK, FontAwesome.LINK);
		map.put(CommonIcons.FOLDER_COLLAPSED, FontAwesome.FOLDER_O);
		map.put(CommonIcons.FOLDER_EXPANDED, FontAwesome.FOLDER_OPEN_O);
		map.put(CommonIcons.FORWARD, FontAwesome.FORWARD);
		map.put(CommonIcons.GEARS, FontAwesome.GEARS);
		map.put(CommonIcons.INFO, FontAwesome.INFO);
		map.put(CommonIcons.PASTE, FontAwesome.PASTE);
		map.put(CommonIcons.PIN, FontAwesome.MAP_PIN);
		map.put(CommonIcons.REPLY, FontAwesome.REPLY);
		map.put(CommonIcons.REPLY_ALL, FontAwesome.REPLY_ALL);
		map.put(CommonIcons.SEARCH, FontAwesome.SEARCH);
		map.put(CommonIcons.SHARE, FontAwesome.SHARE);
		map.put(CommonIcons.SQUARE_DOWN, FontAwesome.CARET_SQUARE_O_DOWN);
		map.put(CommonIcons.SQUARE_LEFT, FontAwesome.CARET_SQUARE_O_LEFT);
		map.put(CommonIcons.SQUARE_RIGHT, FontAwesome.CARET_SQUARE_O_RIGHT);
		map.put(CommonIcons.SQUARE_UP, FontAwesome.CARET_SQUARE_O_UP);
		map.put(CommonIcons.STATISTICS, FontAwesome.SIGNAL);
		map.put(CommonIcons.TABLE, FontAwesome.TABLE);
		map.put(CommonIcons.WARNING, FontAwesome.WARNING);
		map.put(CommonIcons.ZOOM_IN, FontAwesome.SEARCH_PLUS);
		map.put(CommonIcons.ZOOM_OUT, FontAwesome.SEARCH_MINUS);

		//	Print map if xaos.test.verbose is set to true.
		verbosePrintout(
			map,
			MessageFormat.format(
				"Common icons loaded [{0}]",
				DefaultCommonIconProvider.class.getSimpleName()
			)
		);

		ICONS_MAP = Collections.unmodifiableMap(map);

	}

	@Override
	public Node iconFor( Object key, int size ) {

		if ( Objects.nonNull(key) && key instanceof CommonIcons && size > 0 ) {

			Ikon icon = ICONS_MAP.get((CommonIcons) key);
			
			if ( icon != null ) {
				return FontIcon.of(icon, size);
			}

		}

		return null;

	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy