/*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
package org.flexdock.demos.util;
import java.awt.Component;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.flexdock.docking.Dockable;
import org.flexdock.docking.DockingManager;
import org.flexdock.docking.DockingPort;
import org.flexdock.docking.event.DockingEvent;
import org.flexdock.docking.event.DockingEventHandler;
import org.flexdock.docking.event.DockingListener;
import org.flexdock.docking.props.DockablePropertySet;
import org.flexdock.docking.props.PropertyManager;
/**
* @author Christopher Butler
*/
public class DockableTitlepane extends Titlepane implements Dockable {
private String dockingId;
private ArrayList dragSources;
private HashSet frameDragSources;
public DockableTitlepane(String id, String title) {
super(title);
dockingId = id;
// initialize the drag sources
dragSources = new ArrayList();
frameDragSources = new HashSet();
// use the titlebar as a drag source
dragSources.add(getTitlebar());
frameDragSources.add(getTitlebar());
}
// Begin user-defined methods
@Override
public Component getComponent() {
return this;
}
@Override
public List getDragSources() {
return dragSources;
}
@Override
public Set getFrameDragSources() {
return frameDragSources;
}
@Override
public String getPersistentId() {
return dockingId;
}
// End user-defined methods
// Begin framework-provided methods
@Override
public boolean dock(Dockable dockable, String relativeRegion, float ratio) {
return DockingManager.dock(dockable, this, relativeRegion, ratio);
}
@Override
public boolean dock(Dockable dockable, String relativeRegion) {
return DockingManager.dock(dockable, this, relativeRegion);
}
@Override
public boolean dock(Dockable dockable) {
return DockingManager.dock(dockable, this);
}
@Override
public DockingPort getDockingPort() {
return DockingManager.getDockingPort((Dockable)this);
}
@Override
public DockablePropertySet getDockingProperties() {
return PropertyManager.getDockablePropertySet(this);
}
@Override
public void addDockingListener(DockingListener listener) {
DockingEventHandler.addDockingListener(this, listener);
}
@Override
public DockingListener[] getDockingListeners() {
return DockingEventHandler.getDockingListeners(this);
}
@Override
public void removeDockingListener(DockingListener listener) {
DockingEventHandler.removeDockingListener(this, listener);
}
// End framework-provided methods
// Begin event handler methods
@Override
public void dockingCanceled(DockingEvent evt) {
}
@Override
public void dockingComplete(DockingEvent evt) {
}
@Override
public void dragStarted(DockingEvent evt) {
}
@Override
public void dropStarted(DockingEvent evt) {
}
@Override
public void undockingComplete(DockingEvent evt) {
}
@Override
public void undockingStarted(DockingEvent evt) {
}
// End event handler methods
}