Freely movable frames?

In the next release you will be able to call

config.setResizeable( false );
config.setMoveOnBorder( true );

As a result the border will remain, but only at the top side of the frame (if you want to replace the border itself, let me know. There are ways to do that.).

The next release is 1.1.2p2e, and I will upload it during the weekend.

Great!

Are you also planning to add some build-in functionality for modal dockables?

I did not plan it, the idea with overriding “setDockable” does not work? If not I’ll try some other method to set the layer. Or am I misunderstanding what you mean with “modal Dockable”?

The idea is to make a dockable (within ScreenDockStation) act like a dialog from JOptionPane.showInternalDialog. It should constantly grab the focus until its closed.
There is some work-around: you can make JInternalFrame “modal” by using a trick with GlassPane. I try to follow this way but I still have a lot to do.

http://www.coderanch.com/t/341067/GUI/java/Making-JInternalFrame-Modal

Ok. That is a little bit out of scope.

If you have a way to make one JComponent modal, you could always create a new CControl, put a CGridArea on that modal JComponent, and the Dockable into the GridArea. But you would not be able to switch a Dockable between modal and non-modal like this.

Is the new version of framework available soon?

EDIT: Sorry, I see it now. :slight_smile: BTW What means „glass extension“?

This is a screenshot of a client using the glass-extension. The glass-extension changes the look of your application if you use the EclipseTheme. It adds some nice glowing effects to tabs.

It’s a different download because its license is not LGPL (its author does not want you to write a client showing violence or pornography, the LGPL would allow that).

I’ve attached the newest version of the lib to my project and I get an error when trying to show dockable:

java.lang.IllegalStateException: the parent of 'bibliothek.gui.dock.DefaultDockable@4d4d3015' is not 'bibliothek.gui.dock.ScreenDockStation@62e10dd0' but 'null'
	at bibliothek.gui.dock.DockHierarchyLock.ensureLinked(DockHierarchyLock.java:342)
	at bibliothek.gui.dock.DockHierarchyLock.access$400(DockHierarchyLock.java:45)
	at bibliothek.gui.dock.DockHierarchyLock$Token.release(DockHierarchyLock.java:417)
	at bibliothek.gui.dock.ScreenDockStation.addDockable(ScreenDockStation.java:1354)
	at bibliothek.gui.dock.ScreenDockStation.addDockable(ScreenDockStation.java:1291)
	at bibliothek.gui.dock.ScreenDockStation.addDockable(ScreenDockStation.java:1277)
	at MainDemo.<init>(MainDemo.java:167)
	at MainDemo.main(MainDemo.java:70)
Exception in thread "main" java.lang.NoSuchMethodError: bibliothek.gui.dock.station.screen.window.InternalDockDialog.<init>(Lbibliothek/gui/dock/ScreenDockStation;Lbibliothek/gui/dock/station/screen/window/WindowConfiguration;Ljavax/swing/JDesktopPane;I)V
	at bibliothek.gui.dock.station.screen.window.InternalScreenDockWindowFactory.createWindow(InternalScreenDockWindowFactory.java:84)
	at bibliothek.gui.dock.ScreenDockStation.createWindow(ScreenDockStation.java:1895)
	at bibliothek.gui.dock.ScreenDockStation.addDockable(ScreenDockStation.java:1318)
	at bibliothek.gui.dock.ScreenDockStation.addDockable(ScreenDockStation.java:1291)
	at bibliothek.gui.dock.ScreenDockStation.addDockable(ScreenDockStation.java:1277)
	at MainDemo.<init>(MainDemo.java:167)
	at MainDemo.main(MainDemo.java:70)

These lines cause the bug:

final InternalScreenDockWindowFactory internal = new InternalScreenDockWindowFactory( desktop );
properties.set( ScreenDockStation.WINDOW_FACTORY, internal );
// (***)
screen.setWindowFactory(internal);

The entire code:

                DockFrontend front = new DockFrontend(frame);
		front.setShowHideAction(true);
		controller = front.getController();

		JDesktopPane desktop = new JDesktopPane();

		
		// drag and drop controllers
		ScreenDockWindowConfiguration dragEnabled = new ScreenDockWindowConfiguration(){

			@Override
			public WindowConfiguration getConfiguration(ScreenDockStation arg0,
					Dockable arg1) {
				WindowConfiguration wConf = new WindowConfiguration();
				wConf.setAllowDragAndDropOnTitle(false);
				wConf.setResizeable(false);
				wConf.setMoveOnTitleGrab(false);
				wConf.setMoveOnBorder(true);
				return wConf;
			}
		};	
		ScreenDockWindowConfiguration dragDisabled = new ScreenDockWindowConfiguration(){

			@Override
			public WindowConfiguration getConfiguration(ScreenDockStation arg0,
					Dockable arg1) {
				WindowConfiguration wConf = new WindowConfiguration();
				
				wConf.setAllowDragAndDropOnTitle(false);
				wConf.setResizeable(false);
				wConf.setMoveOnTitleGrab(false);
				wConf.setMoveOnBorder(false);
				return wConf;
			}

		};


		DockProperties properties = controller.getProperties();
		final InternalBoundaryRestriction boundary = new InternalBoundaryRestriction( desktop );
		final InternalFullscreenStrategy fullScreen = new InternalFullscreenStrategy( desktop );
		final InternalScreenDockWindowFactory internal = new InternalScreenDockWindowFactory( desktop );

		properties.set( ScreenDockStation.BOUNDARY_RESTRICTION, boundary );
		properties.set( ScreenDockStation.FULL_SCREEN_STRATEGY, fullScreen );
		properties.set( ScreenDockStation.WINDOW_FACTORY, internal );
		properties.set(ScreenDockStation.WINDOW_CONFIGURATION, this.dragEnabled);
		

		
		screen = new ScreenDockStation( controller.getRootWindowProvider() );
		controller.add( screen );
		screen.setBoundaryRestriction(boundary);
		screen.setFullscreenStrategy(fullScreen);
		screen.setWindowFactory(internal);

                // create some dockables
		for (int i=0;i<4;i++){
			Dockable d = create(""+i,i);
			screen.drop( d, new ScreenDockProperty( i*140, 200, 128, 128 ));
		}

“NoSuchMethodError” sounds like you have some old class files. You are certain your classpath is clean, and your project compiled without errors? And also ensure that you are not accidentally mixing classes from your workspace and the library with the same name.