/*
* Copyright (c) 2014 tabletoptool.com team.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* rptools.com team - initial implementation
* tabletoptool.com team - further development
*/
package com.t3.client.ui;
import org.apache.log4j.Logger;
import com.jidesoft.docking.event.DockableFrameEvent;
import com.jidesoft.docking.event.DockableFrameListener;
import com.t3.client.TabletopTool;
/**
* This class acts as a listener to the various dockable frames that TabletopTool uses.
*
* Because rendering of the Selection and Impersonate panels is now suppressed when they are not visible (to improve
* performance) this class resets those panels when they become visible (so that the user sees a seamless transition and
* does not have to select the token again to get the selection / impersonate panels to populate).
*
* @author Rumble
*
*/
public class T3DockListener implements DockableFrameListener {
private static final Logger log = Logger.getLogger(T3DockListener.class);
@Override
public void dockableFrameActivated(DockableFrameEvent dfe) {
showEvent(dfe.toString());
}
@Override
public void dockableFrameAdded(DockableFrameEvent dfe) {
showEvent(dfe.toString());
}
@Override
public void dockableFrameAutohidden(DockableFrameEvent dfe) {
showEvent(dfe.toString());
updatePanels(dfe.getDockableFrame().getName());
}
@Override
public void dockableFrameAutohideShowing(DockableFrameEvent dfe) {
updatePanels(dfe.getDockableFrame().getName());
showEvent(dfe.toString());
}
@Override
public void dockableFrameDeactivated(DockableFrameEvent dfe) {
showEvent(dfe.toString());
}
@Override
public void dockableFrameDocked(DockableFrameEvent dfe) {
showEvent(dfe.toString());
updatePanels(dfe.getDockableFrame().getName());
}
@Override
public void dockableFrameFloating(DockableFrameEvent dfe) {
showEvent(dfe.toString());
}
@Override
public void dockableFrameHidden(DockableFrameEvent dfe) {
}
@Override
public void dockableFrameMaximized(DockableFrameEvent dfe) {
showEvent(dfe.toString());
}
@Override
public void dockableFrameRemoved(DockableFrameEvent dfe) {
}
@Override
public void dockableFrameRestored(DockableFrameEvent dfe) {
showEvent(dfe.toString());
}
@Override
public void dockableFrameShown(DockableFrameEvent dfe) {
updatePanels(dfe.getDockableFrame().getName());
showEvent(dfe.toString());
}
@Override
public void dockableFrameTabHidden(DockableFrameEvent dfe) {
showEvent(dfe.toString());
}
@Override
public void dockableFrameTabShown(DockableFrameEvent dfe) {
updatePanels(dfe.getDockableFrame().getName());
showEvent(dfe.toString());
}
@Override
public void dockableFrameMoved(DockableFrameEvent dfe) {
showEvent(dfe.toString());
}
@Override
public void dockableFrameTransferred(DockableFrameEvent dfe) {
showEvent(dfe.toString());
}
/**
* Updates the Selected or Impersonated panel when it becomes visible to improve performance for moving and
* selecting tokens.
*
* @param panel
* the panel to be updated
*/
private void updatePanels(String panel) {
if (TabletopTool.getFrame() != null) {
if (panel == "SELECTION") {
TabletopTool.getFrame().getSelectionPanel().reset();
}
if (panel == "IMPERSONATED") {
TabletopTool.getFrame().getImpersonatePanel().reset();
}
}
}
/**
* Logging convenience function to show which events are fired
*
* @param dfeId
* the DockableFrameEvent to record
*/
private void showEvent(String dfeId) {
if (log.isTraceEnabled())
log.trace(dfeId);
}
}