Package com.biglybt.ui.swt.mdi
Class TabbedMDI
- java.lang.Object
-
- com.biglybt.ui.swt.skin.SWTSkinObjectAdapter
-
- com.biglybt.ui.swt.views.skin.SkinView
-
- com.biglybt.ui.swt.mdi.BaseMDI
-
- com.biglybt.ui.swt.mdi.TabbedMDI
-
- All Implemented Interfaces:
ParameterListener
,AEDiagnosticsEvidenceGenerator
,UIUpdatable
,MultipleDocumentInterface
,ObfuscateImage
,MultipleDocumentInterfaceSWT
,TabbedMdiInterface
,SWTSkinObjectListener
public class TabbedMDI extends BaseMDI implements TabbedMdiInterface, AEDiagnosticsEvidenceGenerator, ParameterListener, ObfuscateImage
-
-
Field Summary
Fields Modifier and Type Field Description private boolean
allowSubViews
private java.lang.Object
dataSource
private boolean
destroyEntriesOnDeactivate
private int
iFolderHeightAdj
protected boolean
isMainMDI
private static java.lang.String
KEY_AUTO_CLOSE
private java.util.Map
mapUserClosedTabs
private TabbedMdiMaximizeListener
maximizeListener
private boolean
maximizeVisible
protected boolean
minimized
private boolean
minimizeVisible
private int
minimumCharacters
private ParameterListener
paramFancyTabListener
private java.lang.String
props_prefix
private java.util.LinkedList<TabbedEntry>
select_history
private org.eclipse.swt.custom.CTabFolder
tabFolder
private org.eclipse.swt.widgets.Composite
topRight
-
Fields inherited from class com.biglybt.ui.swt.mdi.BaseMDI
AUTOOPENINFO_DS, AUTOOPENINFO_PARENTID, AUTOOPENINFO_TITLE, CLOSEABLECONFIG_INITIALID
-
Fields inherited from interface com.biglybt.ui.mdi.MultipleDocumentInterface
SIDEBAR_HEADER_DASHBOARD, SIDEBAR_HEADER_DEVICES, SIDEBAR_HEADER_DISCOVERY, SIDEBAR_HEADER_ORDER_DEFAULT, SIDEBAR_HEADER_PLUGINS, SIDEBAR_HEADER_TRANSFERS, SIDEBAR_HEADER_VUZE, SIDEBAR_POS_FIRST, SIDEBAR_SECTION_ACTIVITIES, SIDEBAR_SECTION_ALL_TRACKERS, SIDEBAR_SECTION_ALLPEERS, SIDEBAR_SECTION_ALLPIECES, SIDEBAR_SECTION_ARCHIVED_DOWNLOADS, SIDEBAR_SECTION_BETAPROGRAM, SIDEBAR_SECTION_CHAT, SIDEBAR_SECTION_CLIENT_STATS, SIDEBAR_SECTION_CONFIG, SIDEBAR_SECTION_DEVICES, SIDEBAR_SECTION_DISK_OPS, SIDEBAR_SECTION_DOWNLOAD_HISTORY, SIDEBAR_SECTION_LIBRARY, SIDEBAR_SECTION_LIBRARY_CAT_INSTANCES, SIDEBAR_SECTION_LIBRARY_CD, SIDEBAR_SECTION_LIBRARY_DL, SIDEBAR_SECTION_LIBRARY_TAG_INSTANCES, SIDEBAR_SECTION_LIBRARY_UNOPENED, SIDEBAR_SECTION_LOGGER, SIDEBAR_SECTION_MY_SHARES, SIDEBAR_SECTION_MY_TRACKER, SIDEBAR_SECTION_PLUGINS, SIDEBAR_SECTION_SEARCH, SIDEBAR_SECTION_SUBSCRIPTIONS, SIDEBAR_SECTION_TAG_DISCOVERY, SIDEBAR_SECTION_TAGS, SIDEBAR_SECTION_TORRENT_DETAILS, SIDEBAR_SECTION_TORRENT_OPTIONS, SIDEBAR_SECTION_WELCOME, SIDEBAR_TRANSFERS_SECTION_ORDER
-
Fields inherited from interface com.biglybt.ui.swt.skin.SWTSkinObjectListener
EVENT_CREATE_REQUEST, EVENT_CREATED, EVENT_DATASOURCE_CHANGED, EVENT_DESTROY, EVENT_HIDE, EVENT_LANGUAGE_CHANGE, EVENT_OBFUSCATE, EVENT_SELECT, EVENT_SHOW, NAMES
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
addDragDropListeners()
private void
addMenus(TabbedEntry entry, java.lang.String id)
void
buildMDI(SWTSkinObject skinObject)
void
buildMDI(org.eclipse.swt.widgets.Composite parent)
Builds MDI and populates it with entries registered to id or datasourcetypeprivate void
buildTabs()
protected BaseMdiEntry
closeEntryByID(java.lang.String id, boolean userInitiated)
TabbedEntry
createEntry(UISWTViewBuilderCore builder, boolean closeable)
protected MdiEntry
createEntryByCreationListener(java.lang.String id, java.util.Map<?,?> autoOpenInfo)
private TabbedEntry
createEntryFromSkinRef(java.lang.String id, java.lang.String configID, java.lang.String title, ViewTitleInfo titleInfo, java.lang.Object params, boolean closeable, java.lang.String preferredAfterID)
TabbedEntry
createEntryFromSkinRef(java.lang.String parentEntryID, java.lang.String id, java.lang.String configID, java.lang.String title, ViewTitleInfo titleInfo, java.lang.Object params, boolean closeable, java.lang.String preferedAfterID)
If you prefix the 'preferedAfterID' string with '~' then the operation will actually switch to 'preferedBeforeID'TabbedEntry
createHeader(java.lang.String id, java.lang.String title, java.lang.String preferredAfterID)
private void
creatMDI()
void
fillMenu(org.eclipse.swt.widgets.Menu menu, MdiEntry entry, java.lang.String menuID)
void
generate(IndentWriter writer)
boolean
getAllowSubViews()
Whether this MDI wants subviews.TabbedEntry
getCurrentEntry()
TabbedEntry
getEntry(java.lang.String id)
TabbedEntry
getEntryBySkinView(java.lang.Object skinView)
protected TabbedEntry
getEntryFromTabItem(org.eclipse.swt.custom.CTabItem item)
int
getFolderHeight()
java.lang.String
getMenuIdPrefix()
boolean
getMinimized()
private TabbedEntry
getPrevious(TabbedEntry current)
org.eclipse.swt.custom.CTabFolder
getTabFolder()
java.lang.String
getUpdateUIName()
A name for this UIUpdatable so we can track who's being badprivate java.lang.String
getViewTitleID(java.lang.String view_id)
private MdiEntryVitalityImageSWT
getVitalityImageAtPos(int x, int y)
private int
indexOf(MdiEntry entry)
private int
indexOf(java.lang.String viewID)
boolean
isEmpty()
private boolean
isEntryClosedByUser(java.lang.String id)
private void
minimize()
org.eclipse.swt.graphics.Image
obfuscatedImage(org.eclipse.swt.graphics.Image image)
void
parameterChanged(java.lang.String parameterName)
Called, when a parameter has changed.void
popoutEntry(MdiEntry _entry, boolean onTop)
private void
restore()
private void
selectNextTab(boolean selectNext)
void
setAllowSubViews(boolean allowSubViews)
Sets whether this MDI wants subviews.protected void
setCurrentEntry(MdiEntrySWT entry)
void
setDestroyEntriesOnDeactivate(boolean destroyEntriesOnDeactivate)
void
setEntriesDataSource(java.lang.Object newDataSource)
protected void
setEntryLoadedOnce(java.lang.String id)
void
setMaximizeVisible(boolean visible)
void
setMinimized(boolean minimized)
void
setMinimizeVisible(boolean visible)
void
setTabbedMdiMaximizeListener(TabbedMdiMaximizeListener l)
private void
setupNewEntry(TabbedEntry entry)
void
showEntry(MdiEntry _newEntry)
java.lang.Object
skinObjectCreated(SWTSkinObject skinObject, java.lang.Object params)
Skin Object was created.java.lang.Object
skinObjectDestroyed(SWTSkinObject skinObject, java.lang.Object params)
Skin Object was destroyedprotected void
swt_refreshVitality()
private void
swt_setupNewEntry(TabbedEntry entry)
void
updateUI()
Update your UI!protected boolean
wasEntryLoadedOnce(java.lang.String id)
-
Methods inherited from class com.biglybt.ui.swt.mdi.BaseMDI
addItem, addListener, addListener, addListener, canShowEntryByID, closeEntry, closeEntry, closeEntryByID, createEntryFromEventListener, deregisterEntry, deregisterEntry, entryExists, getChildrenOf, getDataSourceType, getEntries, getEntries, getEntriesCount, getEntryFromSkinObject, getMenuHackListeners, getParentView, getPreferredOrder, getViewID, isInitialized, itemSelected, loadEntryByID, loadEntryByID, popoutEntryByID, registerEntry, registerEntry, removeEntryAutoOpen, removeItem, removeItem, removeListener, removeListener, removeListener, saveCloseables, setCloseableConfigFile, setDefaultEntryID, setEntryAutoOpen, setPreferredOrder, setupPluginViews, showEntryByID, showEntryByID, skinObjectInitialShow, triggerEntryLoadedListeners, triggerSelectionListener, updateLanguage, willEntryAutoOpen
-
Methods inherited from class com.biglybt.ui.swt.views.skin.SkinView
getMainSkinObject, getMdiEntry, getSkin, getSkinObject, isDisposed, isVisible, setMainSkinObject, skinObjectHidden, skinObjectShown
-
Methods inherited from class com.biglybt.ui.swt.skin.SWTSkinObjectAdapter
dataSourceChanged, eventOccured, skinObjectSelected
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.biglybt.ui.mdi.MultipleDocumentInterface
addListener, addListener, closeEntry, closeEntry, closeEntryByID, deregisterEntry, deregisterEntry, entryExists, getChildrenOf, getDataSourceType, getEntriesCount, getPreferredOrder, getViewID, isDisposed, isInitialized, isVisible, loadEntryByID, loadEntryByID, registerEntry, registerEntry, removeEntryAutoOpen, removeItem, removeListener, removeListener, setDefaultEntryID, setEntryAutoOpen, setPreferredOrder, showEntryByID, showEntryByID, willEntryAutoOpen
-
Methods inherited from interface com.biglybt.ui.swt.mdi.MultipleDocumentInterfaceSWT
createEntryFromEventListener, getEntries, setCloseableConfigFile
-
Methods inherited from interface com.biglybt.ui.swt.mdi.TabbedMdiInterface
addListener
-
-
-
-
Field Detail
-
KEY_AUTO_CLOSE
private static final java.lang.String KEY_AUTO_CLOSE
- See Also:
- Constant Field Values
-
tabFolder
private org.eclipse.swt.custom.CTabFolder tabFolder
-
select_history
private java.util.LinkedList<TabbedEntry> select_history
-
minimized
protected boolean minimized
-
iFolderHeightAdj
private int iFolderHeightAdj
-
props_prefix
private final java.lang.String props_prefix
-
minimumCharacters
private int minimumCharacters
-
isMainMDI
protected boolean isMainMDI
-
mapUserClosedTabs
private java.util.Map mapUserClosedTabs
-
maximizeVisible
private boolean maximizeVisible
-
minimizeVisible
private boolean minimizeVisible
-
maximizeListener
private TabbedMdiMaximizeListener maximizeListener
-
paramFancyTabListener
private ParameterListener paramFancyTabListener
-
topRight
private org.eclipse.swt.widgets.Composite topRight
-
destroyEntriesOnDeactivate
private boolean destroyEntriesOnDeactivate
-
dataSource
private java.lang.Object dataSource
-
allowSubViews
private boolean allowSubViews
-
-
Constructor Detail
-
TabbedMDI
public TabbedMDI()
-
TabbedMDI
public TabbedMDI(java.lang.Class<?> pluginDataSourceType, java.lang.String viewID, java.lang.String props_prefix, UISWTView parentView, java.lang.Object dataSource)
- Parameters:
pluginDataSourceType
- Only needed if every tab is based on the same datasource, such asDownload
viewID
- ID used to register views against this MDIparent
- SWT Composite to place widgets onprops_prefix
- Prefix for loading MDIs properties (open history, etc)
Also used to get registered menu items. So, should be one of MENU_ constants inMenuManager
parentView
- This MDI's parent. For example, Parent=(Torrent's Peers View), this=(MDI showing Piece Map, Files, etc)dataSource
- DataSource to pass into each new entry. If null, entry's initial datasource will be used.
-
-
Method Detail
-
buildMDI
public void buildMDI(org.eclipse.swt.widgets.Composite parent)
Description copied from interface:MultipleDocumentInterfaceSWT
Builds MDI and populates it with entries registered to id or datasourcetype- Specified by:
buildMDI
in interfaceMultipleDocumentInterfaceSWT
-
buildMDI
public void buildMDI(SWTSkinObject skinObject)
- Specified by:
buildMDI
in interfaceMultipleDocumentInterfaceSWT
-
skinObjectCreated
public java.lang.Object skinObjectCreated(SWTSkinObject skinObject, java.lang.Object params)
Description copied from class:SWTSkinObjectAdapter
Skin Object was created. All children are guaranteed to be created.- Overrides:
skinObjectCreated
in classSkinView
-
skinObjectDestroyed
public java.lang.Object skinObjectDestroyed(SWTSkinObject skinObject, java.lang.Object params)
Description copied from class:SWTSkinObjectAdapter
Skin Object was destroyed- Overrides:
skinObjectDestroyed
in classBaseMDI
-
creatMDI
private void creatMDI()
-
addDragDropListeners
private void addDragDropListeners()
-
buildTabs
private void buildTabs()
-
getVitalityImageAtPos
private MdiEntryVitalityImageSWT getVitalityImageAtPos(int x, int y)
-
getViewTitleID
private java.lang.String getViewTitleID(java.lang.String view_id)
-
minimize
private void minimize()
-
restore
private void restore()
-
selectNextTab
private void selectNextTab(boolean selectNext)
-
wasEntryLoadedOnce
protected boolean wasEntryLoadedOnce(java.lang.String id)
- Specified by:
wasEntryLoadedOnce
in classBaseMDI
-
setEntryLoadedOnce
protected void setEntryLoadedOnce(java.lang.String id)
- Specified by:
setEntryLoadedOnce
in classBaseMDI
-
getPrevious
private TabbedEntry getPrevious(TabbedEntry current)
-
showEntry
public void showEntry(MdiEntry _newEntry)
- Specified by:
showEntry
in interfaceMultipleDocumentInterface
-
createEntryFromSkinRef
private TabbedEntry createEntryFromSkinRef(java.lang.String id, java.lang.String configID, java.lang.String title, ViewTitleInfo titleInfo, java.lang.Object params, boolean closeable, java.lang.String preferredAfterID)
-
createEntryFromSkinRef
public TabbedEntry createEntryFromSkinRef(java.lang.String parentEntryID, java.lang.String id, java.lang.String configID, java.lang.String title, ViewTitleInfo titleInfo, java.lang.Object params, boolean closeable, java.lang.String preferedAfterID)
Description copied from interface:MultipleDocumentInterface
If you prefix the 'preferedAfterID' string with '~' then the operation will actually switch to 'preferedBeforeID'- Specified by:
createEntryFromSkinRef
in interfaceMultipleDocumentInterface
- Specified by:
createEntryFromSkinRef
in classBaseMDI
- Parameters:
preferedAfterID
- Not used for Tabs- Returns:
-
createEntry
public TabbedEntry createEntry(UISWTViewBuilderCore builder, boolean closeable)
- Specified by:
createEntry
in interfaceMultipleDocumentInterfaceSWT
- Returns:
- Newly created MDI Entry
-
closeEntryByID
protected BaseMdiEntry closeEntryByID(java.lang.String id, boolean userInitiated)
- Overrides:
closeEntryByID
in classBaseMDI
-
updateUI
public void updateUI()
Description copied from interface:UIUpdatable
Update your UI!- Specified by:
updateUI
in interfaceTabbedMdiInterface
- Specified by:
updateUI
in interfaceUIUpdatable
- Overrides:
updateUI
in classBaseMDI
-
isEntryClosedByUser
private boolean isEntryClosedByUser(java.lang.String id)
-
setupNewEntry
private void setupNewEntry(TabbedEntry entry)
-
swt_setupNewEntry
private void swt_setupNewEntry(TabbedEntry entry)
-
indexOf
private int indexOf(MdiEntry entry)
-
indexOf
private int indexOf(java.lang.String viewID)
-
getEntryFromTabItem
protected TabbedEntry getEntryFromTabItem(org.eclipse.swt.custom.CTabItem item)
-
getUpdateUIName
public java.lang.String getUpdateUIName()
Description copied from interface:UIUpdatable
A name for this UIUpdatable so we can track who's being bad- Specified by:
getUpdateUIName
in interfaceUIUpdatable
- Overrides:
getUpdateUIName
in classBaseMDI
- Returns:
- some name
-
generate
public void generate(IndentWriter writer)
- Specified by:
generate
in interfaceAEDiagnosticsEvidenceGenerator
-
createHeader
public TabbedEntry createHeader(java.lang.String id, java.lang.String title, java.lang.String preferredAfterID)
- Specified by:
createHeader
in interfaceMultipleDocumentInterface
-
getTabFolder
public org.eclipse.swt.custom.CTabFolder getTabFolder()
- Specified by:
getTabFolder
in interfaceTabbedMdiInterface
-
setMaximizeVisible
public void setMaximizeVisible(boolean visible)
- Specified by:
setMaximizeVisible
in interfaceTabbedMdiInterface
-
setMinimizeVisible
public void setMinimizeVisible(boolean visible)
- Specified by:
setMinimizeVisible
in interfaceTabbedMdiInterface
-
getMinimized
public boolean getMinimized()
- Specified by:
getMinimized
in interfaceTabbedMdiInterface
-
setMinimized
public void setMinimized(boolean minimized)
- Specified by:
setMinimized
in interfaceTabbedMdiInterface
-
getFolderHeight
public int getFolderHeight()
- Specified by:
getFolderHeight
in interfaceTabbedMdiInterface
-
parameterChanged
public void parameterChanged(java.lang.String parameterName)
Description copied from interface:ParameterListener
Called, when a parameter has changed. The listener could only react if the parameter name is relevant. Or the listener can just read all parameters again.- Specified by:
parameterChanged
in interfaceParameterListener
- Parameters:
parameterName
- the name of the parameter that has changed
-
setTabbedMdiMaximizeListener
public void setTabbedMdiMaximizeListener(TabbedMdiMaximizeListener l)
- Specified by:
setTabbedMdiMaximizeListener
in interfaceTabbedMdiInterface
-
setDestroyEntriesOnDeactivate
public void setDestroyEntriesOnDeactivate(boolean destroyEntriesOnDeactivate)
- Specified by:
setDestroyEntriesOnDeactivate
in interfaceTabbedMdiInterface
-
setEntriesDataSource
public void setEntriesDataSource(java.lang.Object newDataSource)
- Specified by:
setEntriesDataSource
in interfaceTabbedMdiInterface
-
setAllowSubViews
public void setAllowSubViews(boolean allowSubViews)
Description copied from interface:TabbedMdiInterface
Sets whether this MDI wants subviews. This is only a recommendation. It's up to the MdiEntry to obey what they show or don't show. MdiEntries can check for this flag inUISWTViewEvent.TYPE_CREATE
with:
UISWTView view = event.getView(); if (view instanceof TabbedEntry) { enable_tabs = ((TabbedEntry) view).getMDI().getAllowSubViews(); } else { // Not in an MDI, set enable_tabs here }
- Specified by:
setAllowSubViews
in interfaceTabbedMdiInterface
-
getAllowSubViews
public boolean getAllowSubViews()
Description copied from interface:TabbedMdiInterface
Whether this MDI wants subviews. This is only a recommendation. It's up to the MdiEntry to obey what they show or don't show.- Specified by:
getAllowSubViews
in interfaceTabbedMdiInterface
-
isEmpty
public boolean isEmpty()
-
obfuscatedImage
public org.eclipse.swt.graphics.Image obfuscatedImage(org.eclipse.swt.graphics.Image image)
- Specified by:
obfuscatedImage
in interfaceObfuscateImage
-
createEntryByCreationListener
protected MdiEntry createEntryByCreationListener(java.lang.String id, java.util.Map<?,?> autoOpenInfo)
- Overrides:
createEntryByCreationListener
in classBaseMDI
-
addMenus
private void addMenus(TabbedEntry entry, java.lang.String id)
-
popoutEntry
public void popoutEntry(MdiEntry _entry, boolean onTop)
- Specified by:
popoutEntry
in classBaseMDI
-
fillMenu
public void fillMenu(org.eclipse.swt.widgets.Menu menu, MdiEntry entry, java.lang.String menuID)
-
getMenuIdPrefix
public java.lang.String getMenuIdPrefix()
- Overrides:
getMenuIdPrefix
in classBaseMDI
-
setCurrentEntry
protected void setCurrentEntry(MdiEntrySWT entry)
- Overrides:
setCurrentEntry
in classBaseMDI
-
swt_refreshVitality
protected void swt_refreshVitality()
-
getEntry
public TabbedEntry getEntry(java.lang.String id)
- Specified by:
getEntry
in interfaceMultipleDocumentInterface
- Specified by:
getEntry
in interfaceMultipleDocumentInterfaceSWT
- Overrides:
getEntry
in classBaseMDI
-
getCurrentEntry
public TabbedEntry getCurrentEntry()
- Specified by:
getCurrentEntry
in interfaceMultipleDocumentInterface
- Specified by:
getCurrentEntry
in interfaceMultipleDocumentInterfaceSWT
- Overrides:
getCurrentEntry
in classBaseMDI
-
getEntryBySkinView
public TabbedEntry getEntryBySkinView(java.lang.Object skinView)
- Specified by:
getEntryBySkinView
in interfaceMultipleDocumentInterfaceSWT
- Overrides:
getEntryBySkinView
in classBaseMDI
-
-