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

org.fife.ui.rtextfilechooser.FileChooserViewRendererFactory Maven / Gradle / Ivy

/*
 * 01/13/2013
 *
 * FileChooserViewRendererFactory - Creates appropriate renderers for file
 * chooser views.
 * Copyright (C) 2013 Robert Futrell
 * http://fifesoft.com/rtext
 * Licensed under a modified BSD license.
 * See the included license file for details.
 */
package org.fife.ui.rtextfilechooser;

import java.lang.reflect.Constructor;

import javax.swing.ListCellRenderer;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;

import org.fife.ui.SubstanceUtils;


/**
 * Creates renderers to use for various file chooser views (list, details,
 * etc.).  If Substance is the current Look and Feel, a Substance-specific
 * renderer is dynamically loaded and used, otherwise, suitable defaults
 * are used.  I love how Substance makes it a pain in the ass to do custom
 * renderers!
 * 
 * @author Robert Futrell
 * @version 1.0
 */
class FileChooserViewRendererFactory {


	/**
	 * Private constructor to prevent instantiation.
	 */
	private FileChooserViewRendererFactory() {
	}


	/**
	 * Returns the renderer to use for all non-special columns in "details
	 * view."
	 *
	 * @return the renderer to use.
	 */
	public static TableCellRenderer createDefaultTableRenderer() {
		if (SubstanceUtils.isSubstanceInstalled()) {
			try {
				Class clazz = Class.forName(
					"org.pushingpixels.substance.api.renderers.SubstanceDefaultTableCellRenderer");
				return (TableCellRenderer)clazz.newInstance();
			} catch (Exception e) { // Should never happen
				e.printStackTrace();
			}
		}
		return new DefaultTableCellRenderer();
	}


	/**
	 * Returns the renderer to use in the "list view."
	 *
	 * @param chooser The file chooser.
	 * @return The renderer.
	 */
	public static ListCellRenderer createListViewRenderer(
			RTextFileChooser chooser) {

		ListCellRenderer renderer = null;

		if (SubstanceUtils.isSubstanceInstalled()) {
			String clazzName =
				"org.fife.ui.rtextfilechooser.ListViewSubstanceCellRenderer";
			// Use reflection to avoid compile dependency in this class to
			// Substance
			try {
				Class clazz = Class.forName(clazzName);
				Constructor c = clazz.getConstructor(new Class[] { RTextFileChooser.class });
				renderer = (ListCellRenderer)c.newInstance(new Object[] { chooser });
			} catch (Exception e) { // Should never happen
				e.printStackTrace();
			}
		}

		if (renderer==null) {
			renderer = new ListViewCellRenderer(chooser);
		}

		return renderer;

	}


	/**
	 * Returns the renderer to use for file names in the "details view."
	 *
	 * @param chooser The file chooser.
	 * @return The renderer to use.
	 */
	public static TableCellRenderer createTableFileNameRenderer(
			RTextFileChooser chooser) {

		TableCellRenderer renderer = null;

		if (SubstanceUtils.isSubstanceInstalled()) {
			// Use reflection to avoid compile dependency in this class to
			// Substance
			try {
				Class clazz = Class.forName(
					"org.fife.ui.rtextfilechooser.DetailsViewSubstanceFileNameRenderer");
				Constructor c = clazz.getConstructor(new Class[] { RTextFileChooser.class });
				renderer = (TableCellRenderer)c.newInstance(new Object[] { chooser });
			} catch (Exception e) { // Should never happen
				e.printStackTrace();
			}
		}

		if (renderer==null) {
			renderer = new DetailsViewFileNameRenderer(chooser);
		}

		return renderer;

	}


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy