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

tutorial.TutorialMain Maven / Gradle / Ivy

The newest version!
package tutorial;

/*
 *    ************
 *    ** README **
 *    ************
 * 
 * This is a series of small examples introducing some basic and some more
 * advanced concepts of DockingFrames.
 * 
 * Each file contains a main-Methode. You'll need to add "dockingFramesCore.jar"
 * and "dockingFramesCommon.jar" to your classpath in order to run them. These
 * applications will run with Java 1.6.
 * 
 * This first class is not part of the tutorial, but provides an application 
 * with which you can easily start all the other classes.
 */


import java.awt.BorderLayout;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.ListSelectionModel;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.TreePath;

import tutorial.support.CodePanel;
import tutorial.support.CopyCodeAction;
import tutorial.support.TutorialPanel;
import tutorial.support.sets.RootSet;
import tutorial.support.sets.TutorialTreeModel;
import bibliothek.gui.dock.common.CControl;
import bibliothek.gui.dock.common.CGrid;
import bibliothek.gui.dock.common.DefaultSingleCDockable;
import bibliothek.gui.dock.common.theme.ThemeMap;

public class TutorialMain extends JFrame{
	public static void main( String[] args ) throws InstantiationException, IllegalAccessException{
		TutorialMain readme = new TutorialMain();
		readme.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		readme.setBounds( 20, 20, 800, 600 );
		readme.setVisible( true );
	}
	
	private TutorialPanel currentSelection;
	private CodePanel currentCode;
	
	public TutorialMain() throws InstantiationException, IllegalAccessException{
		setTitle( "DockingFrames - Examples" );
		
		CControl control = new CControl( this );
		control.setTheme( ThemeMap.KEY_FLAT_THEME );
		add( control.getContentArea() );
		
		CGrid layout = new CGrid( control );
		
		currentSelection = new TutorialPanel();
		DefaultSingleCDockable currentSelectionDockable = new DefaultSingleCDockable( "selection", "Selection" );
		currentSelectionDockable.setLayout( new BorderLayout() );
		currentSelectionDockable.add( currentSelection, BorderLayout.CENTER );
		currentSelectionDockable.setCloseable( false );
		layout.add( 30, 0, 70, 100, currentSelectionDockable );
		
		currentCode = new CodePanel();
		DefaultSingleCDockable currentCodeDockable = new DefaultSingleCDockable( "code", "Code" );
		currentCodeDockable.setLayout( new BorderLayout() );
		currentCodeDockable.add( currentCode.toComponent(), BorderLayout.CENTER );
		currentCodeDockable.setCloseable( false );
		currentCodeDockable.addAction( new CopyCodeAction( currentCode ));
		layout.add( 30, 0, 70, 100, currentCodeDockable );
		layout.select( 30, 0, 70, 100, currentSelectionDockable ); 
	
		final JTree tutorialsTree = new JTree( new TutorialTreeModel( RootSet.class ));
		tutorialsTree.getSelectionModel().setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
		tutorialsTree.setShowsRootHandles( true );
		tutorialsTree.setRootVisible( false );
		tutorialsTree.addTreeSelectionListener( new TreeSelectionListener(){
			public void valueChanged( TreeSelectionEvent e ){
				TreePath path = tutorialsTree.getSelectionPath();
				if( path == null ){
					select( null );
				}
				else{
					select( (TutorialTreeModel.Node)path.getLastPathComponent() );
				}
			}
		});
		tutorialsTree.setSelectionRow( 0 );
		DefaultSingleCDockable listDockable = new DefaultSingleCDockable( "list", "Tutorials" );
		listDockable.setLayout( new BorderLayout() );
		listDockable.add( new JScrollPane( tutorialsTree ), BorderLayout.CENTER );
		listDockable.setCloseable( false );
		layout.add( 0, 0, 30, 100, listDockable );
		
		control.getContentArea().deploy( layout );
	}
	
	private void select( TutorialTreeModel.Node node ){
		if( node == null ){
			currentSelection.set( null, null, null, null );
		}
		else{
			try{
				currentSelection.set( node.getTitle(), node.getDescription(), node.getImage(), node.getMainClass() );
				currentCode.setCode( node.getCode() );
			}
			catch( IOException e ){
				e.printStackTrace();
				currentCode.setCode( "" );
			}
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy