package com.aelitis.azureus.ui.swt.views.skin; import java.util.ArrayList; import org.eclipse.swt.SWT; import org.gudy.azureus2.core3.internat.MessageText; import org.gudy.azureus2.core3.util.Constants; import org.gudy.azureus2.ui.swt.shells.MessageBoxShell; import com.aelitis.azureus.ui.common.viewtitleinfo.ViewTitleInfo; import com.aelitis.azureus.ui.common.viewtitleinfo.ViewTitleInfoListener; import com.aelitis.azureus.ui.common.viewtitleinfo.ViewTitleInfoManager; import com.aelitis.azureus.ui.mdi.*; import com.aelitis.azureus.ui.swt.views.ViewTitleInfoBetaP; public class SB_Vuze { private ArrayList<MdiEntry> children = new ArrayList<MdiEntry>(); private ViewTitleInfo titleInfo; public SB_Vuze(MultipleDocumentInterface mdi) { setup(mdi); } private void setup(final MultipleDocumentInterface mdi) { mdi.registerEntry(MultipleDocumentInterface.SIDEBAR_SECTION_BETAPROGRAM, new MdiEntryCreationListener() { public MdiEntry createMDiEntry(String id) { final ViewTitleInfoBetaP viewTitleInfo = new ViewTitleInfoBetaP(); MdiEntry entry = mdi.createEntryFromSkinRef( MultipleDocumentInterface.SIDEBAR_HEADER_VUZE, MultipleDocumentInterface.SIDEBAR_SECTION_BETAPROGRAM, "main.area.beta", "{Sidebar.beta.title}", viewTitleInfo, null, true, MultipleDocumentInterface.SIDEBAR_POS_FIRST); entry.setImageLeftID("image.sidebar.beta"); entry.addListener(new MdiCloseListener() { public void mdiEntryClosed(MdiEntry entry, boolean userClosed) { viewTitleInfo.clearIndicator(); } }); return entry; } }); mdi.registerEntry(MultipleDocumentInterface.SIDEBAR_SECTION_WELCOME, new MdiEntryCreationListener() { public MdiEntry createMDiEntry(String id) { MdiEntry entry = mdi.createEntryFromSkinRef( MultipleDocumentInterface.SIDEBAR_HEADER_VUZE, MultipleDocumentInterface.SIDEBAR_SECTION_WELCOME, "main.area.welcome", MessageText.getString("v3.MainWindow.menu.getting_started").replaceAll( "&", ""), null, null, true, ""); entry.setImageLeftID("image.sidebar.welcome"); addDropTest(entry); return entry; } }); SBC_ActivityTableView.setupSidebarEntry(); ViewTitleInfoManager.addListener(new ViewTitleInfoListener() { public void viewTitleInfoRefresh(ViewTitleInfo titleInfo) { MdiEntry childrenArray[] = children.toArray(new MdiEntry[0]); for (MdiEntry entry : childrenArray) { if (entry.getViewTitleInfo() == titleInfo) { if (SB_Vuze.this.titleInfo != null) { ViewTitleInfoManager.refreshTitleInfo(SB_Vuze.this.titleInfo); } break; } } } }); mdi.addListener(new MdiEntryLoadedListener() { public void mdiEntryLoaded(MdiEntry entry) { if (MultipleDocumentInterface.SIDEBAR_HEADER_VUZE.equals(entry.getParentID())) { children.add(entry); entry.addListener(new MdiChildCloseListener() { public void mdiChildEntryClosed(MdiEntry parent, MdiEntry child, boolean user) { children.remove(child); } }); } if (!entry.getId().equals(MultipleDocumentInterface.SIDEBAR_HEADER_VUZE)) { return; } setupHeader(entry); } }); } private void setupHeader(final MdiEntry entry) { titleInfo = new ViewTitleInfo() { public Object getTitleInfoProperty(int propertyID) { if (propertyID == ViewTitleInfo.TITLE_INDICATOR_TEXT) { if (entry.isExpanded()) { return null; } StringBuilder sb = new StringBuilder(); MdiEntry[] entries = entry.getMDI().getEntries(); for (MdiEntry subEntry : entries) { if (entry.getId().equals(subEntry.getParentID())) { ViewTitleInfo titleInfo = subEntry.getViewTitleInfo(); if (titleInfo != null) { Object text = titleInfo.getTitleInfoProperty(TITLE_INDICATOR_TEXT); if (text instanceof String) { if (sb.length() > 0) { sb.append(" | "); } sb.append(text); } } } } if (sb.length() > 0) { return sb.toString(); } } else if (propertyID == ViewTitleInfo.TITLE_INDICATOR_TEXT_TOOLTIP) { if (entry.isExpanded()) { return null; } StringBuilder sb = new StringBuilder(); MdiEntry[] entries = entry.getMDI().getEntries(); for (MdiEntry subEntry : entries) { if (entry.getId().equals(subEntry.getParentID())) { ViewTitleInfo titleInfo = subEntry.getViewTitleInfo(); if (titleInfo != null) { Object text = titleInfo.getTitleInfoProperty(TITLE_INDICATOR_TEXT); if (text instanceof String) { if (sb.length() > 0) { sb.append("\n"); } sb.append(subEntry.getTitle() + ": " + text); } } } } if (sb.length() > 0) { return sb.toString(); } } return null; } }; entry.setViewTitleInfo(titleInfo); } protected void addDropTest(MdiEntry entry) { if (!Constants.isCVSVersion()) { return; } entry.addListener(new MdiEntryDropListener() { public boolean mdiEntryDrop(MdiEntry entry, Object droppedObject) { String s = "You just dropped " + droppedObject.getClass() + "\n" + droppedObject + "\n\n"; if (droppedObject.getClass().isArray()) { Object[] o = (Object[]) droppedObject; for (int i = 0; i < o.length; i++) { s += "" + i + ": "; Object object = o[i]; if (object == null) { s += "null"; } else { s += object.getClass() + ";" + object; } s += "\n"; } } new MessageBoxShell(SWT.OK, "test", s).open(null); return true; } }); } }