use of com.biglybt.ui.UIFunctions in project BiglyBT by BiglySoftware.
the class DebugMenuHelper method createDebugMenuItem.
/**
* Creates the Debug menu and its children
* NOTE: This is a development only menu and so it's not modularized into separate menu items
* because this menu is always rendered in its entirety
* @param menu
* @param mainWindow
* @return
*/
public static Menu createDebugMenuItem(final Menu menu) {
MenuItem item;
final UIFunctionsSWT uiFunctions = UIFunctionsManagerSWT.getUIFunctionsSWT();
if (null == uiFunctions) {
throw new IllegalStateException("UIFunctionsManagerSWT.getUIFunctionsSWT() is returning null");
}
item = new MenuItem(menu, SWT.CASCADE);
Messages.setLanguageText(item, "MainWindow.menu.debug");
Menu menuDebug = new Menu(menu.getParent(), SWT.DROP_DOWN);
item.setMenu(menuDebug);
item = new MenuItem(menuDebug, SWT.CASCADE);
item.setText("ScreenSize");
Menu menuSS = new Menu(menu.getParent(), SWT.DROP_DOWN);
item.setMenu(menuSS);
item = new MenuItem(menuSS, SWT.NONE);
item.setText("640x400");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(640, 400);
}
});
item = new MenuItem(menuSS, SWT.NONE);
item.setText("800x560");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(850, 560);
}
});
item = new MenuItem(menuSS, SWT.NONE);
item.setText("1024x700");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(1024, 700);
}
});
item = new MenuItem(menuSS, SWT.NONE);
item.setText("1024x768");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(1024, 768);
}
});
item = new MenuItem(menuSS, SWT.NONE);
item.setText("1152x784");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(1152, 784);
}
});
item = new MenuItem(menuSS, SWT.NONE);
item.setText("1280x720");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(1280, 720);
}
});
item = new MenuItem(menuSS, SWT.NONE);
item.setText("1280x1024");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(1280, 1024);
}
});
item = new MenuItem(menuSS, SWT.NONE);
item.setText("1440x820");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(1440, 820);
}
});
item = new MenuItem(menuSS, SWT.NONE);
item.setText("1600x970");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(1600, 970);
}
});
item = new MenuItem(menuSS, SWT.NONE);
item.setText("1920x1200");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(1920, 1200);
}
});
item = new MenuItem(menuSS, SWT.NONE);
item.setText("2560x1520");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
uiFunctions.getMainShell().setSize(2560, 1520);
}
});
item = new MenuItem(menuDebug, SWT.NONE);
item.setText("Reload messagebundle");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
MessageText.loadBundle(true);
DisplayFormatters.setUnits();
DisplayFormatters.loadMessages();
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
if (uiFunctions != null) {
uiFunctions.refreshLanguage();
}
}
});
item = new MenuItem(menuDebug, SWT.CHECK);
item.setText("SR ChangeFlagChecker Paused");
item.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
StartStopRulesDefaultPlugin.pauseChangeFlagChecker = !StartStopRulesDefaultPlugin.pauseChangeFlagChecker;
((MenuItem) e.widget).setSelection(StartStopRulesDefaultPlugin.pauseChangeFlagChecker);
}
});
return menuDebug;
}
use of com.biglybt.ui.UIFunctions in project BiglyBT by BiglySoftware.
the class MainStatusBar method initStatusBar.
/**
* @return composite holding the statusbar
*/
public Composite initStatusBar(final Composite _parent) {
this.parent = _parent;
this.display = parent.getDisplay();
this.uiFunctions = UIFunctionsManager.getUIFunctions();
ImageLoader imageLoader = ImageLoader.getInstance();
FormData formData;
Color fgColor = parent.getForeground();
statusBar = new Composite(parent, SWT.NONE);
statusBar.setForeground(fgColor);
isAZ3 = "az3".equalsIgnoreCase(COConfigurationManager.getStringParameter("ui"));
statusBar.getShell().addListener(SWT.Deiconify, new Listener() {
@Override
public void handleEvent(Event event) {
Utils.execSWTThreadLater(0, new AERunnable() {
@Override
public void runSupport() {
if (!statusBar.isDisposed()) {
statusBar.layout();
}
}
});
}
});
statusBar.addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e) {
if (uiFunctions != null) {
UIUpdater uiUpdater = uiFunctions.getUIUpdater();
if (uiUpdater != null) {
uiUpdater.removeUpdater(MainStatusBar.this);
}
}
PRManager.removeListener(progressListener);
Utils.disposeSWTObjects(imgRec, imgSent);
Utils.removeParameterListeners(mapConfigListeners);
if (alert_flasher_event != null) {
alert_flasher_event.cancel();
alert_flasher_event = null;
}
if (alertHistoryListener != null) {
Alerts.removeMessageHistoryListener(alertHistoryListener);
alertHistoryListener = null;
}
}
});
GridLayout layout_status = new GridLayout();
layout_status.numColumns = 20;
layout_status.horizontalSpacing = 0;
layout_status.verticalSpacing = 0;
layout_status.marginHeight = 0;
if (Constants.isOSX) {
// OSX has a resize widget on the bottom right. It's about 15px wide.
try {
layout_status.marginRight = 15;
} catch (NoSuchFieldError e) {
// Pre SWT 3.1
layout_status.marginWidth = 15;
}
} else {
layout_status.marginWidth = 0;
}
statusBar.setLayout(layout_status);
// Either the Status Text
statusText = new CLabel(statusBar, borderFlag);
statusText.setForeground(fgColor);
Utils.setLayoutData(statusText, new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_FILL));
addStatusBarMenu(statusText);
GC gc = new GC(statusText);
// add 6, because CLabel forces a 3 pixel indent
int height = Math.max(16, gc.getFontMetrics().getHeight()) + 6;
gc.dispose();
formData = new FormData();
formData.height = height;
// 2 params for Pre SWT 3.0
formData.bottom = new FormAttachment(100, 0);
// 2 params for Pre SWT 3.0
formData.left = new FormAttachment(0, 0);
// 2 params for Pre SWT 3.0
formData.right = new FormAttachment(100, 0);
statusBar.setLayoutData(formData);
Listener listener = new Listener() {
@Override
public void handleEvent(Event e) {
if (clickListener == null) {
if (updateWindow != null) {
updateWindow.show();
}
} else {
clickListener.UIStatusTextClicked();
}
}
};
statusText.addListener(SWT.MouseUp, listener);
statusText.addListener(SWT.MouseDoubleClick, listener);
// KN: Don't know why OSX is treated differently but this check was already here from the previous code
if (Constants.isOSX) {
progressBar = new AZProgressBar(statusBar, true);
} else {
progressBar = new AZProgressBar(statusBar, false);
}
progressBar.setVisible(false);
progressGridData = new GridData(SWT.CENTER, SWT.CENTER, false, false);
progressGridData.widthHint = 5;
Utils.setLayoutData(progressBar, progressGridData);
// addRIP();
/*
* Progress reporting window image label
*/
progressViewerImageLabel = new CLabelPadding(statusBar, SWT.NONE);
// image set below after adding listener
progressViewerImageLabel.setToolTipText(MessageText.getString("Progress.reporting.statusbar.button.tooltip"));
progressViewerImageLabel.addMouseListener(new MouseAdapter() {
@Override
public void mouseDown(MouseEvent e) {
/*
* Opens the progress viewer if any of the reporters in the array is NOT already opened
* KN: TODO -- This is only a partial solution to minimize the occurrence of the main progress window
* opening more than once. The one remaining case where multiple windows will still open is
* when you have one opened already... then run another process such as a torrent file download...
* at this point this new process is not in the already opened window so the check would
* allow the second window to open.
*/
IProgressReporter[] reporters = PRManager.getReportersArray(false);
if (reporters.length == 0) {
/*
* If there's nothing to see then open the window; the default widow will say there's nothing to see
* KN: calling isShowingEmpty return true is there is already a window opened showing the empty panel
*/
if (!ProgressReporterWindow.isShowingEmpty()) {
ProgressReporterWindow.open(reporters, ProgressReporterWindow.SHOW_TOOLBAR);
}
} else {
for (int i = 0; i < reporters.length; i++) {
if (!ProgressReporterWindow.isOpened(reporters[i])) {
ProgressReporterWindow.open(reporters, ProgressReporterWindow.SHOW_TOOLBAR);
break;
}
}
}
}
});
progressViewerImageLabel.addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e) {
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.releaseImage("progress_error");
imageLoader.releaseImage("progress_info");
imageLoader.releaseImage("progress_viewer");
}
});
this.plugin_label_composite = new Composite(statusBar, SWT.NONE);
this.plugin_label_composite.setForeground(fgColor);
GridLayout gridLayout = new GridLayout();
gridLayout.horizontalSpacing = 0;
gridLayout.verticalSpacing = 0;
gridLayout.marginHeight = 0;
gridLayout.marginBottom = 0;
gridLayout.marginTop = 0;
gridLayout.marginLeft = 0;
gridLayout.marginRight = 0;
// Something nice and big. :)
gridLayout.numColumns = 20;
GridData gridData = new GridData(GridData.FILL_VERTICAL);
gridData.heightHint = height;
gridData.minimumHeight = height;
plugin_label_composite.setLayout(gridLayout);
plugin_label_composite.setLayoutData(gridData);
srStatus = new CLabelPadding(statusBar, borderFlag);
srStatus.setText(MessageText.getString("SpeedView.stats.ratio"));
Utils.addAndFireParameterListener(mapConfigListeners, true, "Status Area Show SR", new ParameterListener() {
@Override
public void parameterChanged(String parameterName) {
srStatus.setVisible(COConfigurationManager.getBooleanParameter(parameterName));
statusBar.layout();
}
});
natStatus = new CLabelPadding(statusBar, borderFlag);
natStatus.setText("");
final Menu natStatusMenu = new Menu(statusBar.getShell(), SWT.POP_UP);
natStatus.setMenu(natStatusMenu);
MenuItem nat_test = new MenuItem(natStatusMenu, SWT.PUSH);
Messages.setLanguageText(nat_test, "MainWindow.menu.tools.nattest");
nat_test.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent arg0) {
new NatTestWindow();
}
});
Utils.addAndFireParameterListener(mapConfigListeners, true, "Status Area Show NAT", new ParameterListener() {
@Override
public void parameterChanged(String parameterName) {
natStatus.setVisible(COConfigurationManager.getBooleanParameter(parameterName));
statusBar.layout();
}
});
dhtStatus = new CLabelPadding(statusBar, borderFlag);
dhtStatus.setText("");
dhtStatus.setToolTipText(MessageText.getString("MainWindow.dht.status.tooltip"));
Utils.addAndFireParameterListener(mapConfigListeners, true, "Status Area Show DDB", new ParameterListener() {
@Override
public void parameterChanged(String parameterName) {
dhtStatus.setVisible(COConfigurationManager.getBooleanParameter(parameterName));
statusBar.layout();
}
});
// ip filters
ipBlocked = new CLabelPadding(statusBar, borderFlag);
// $NON-NLS-1$
ipBlocked.setText("{} IPs:");
Messages.setLanguageText(ipBlocked, "MainWindow.IPs.tooltip");
ipBlocked.addListener(SWT.MouseDoubleClick, new ListenerNeedingCoreRunning() {
@Override
public void handleEvent(Core core, Event event) {
BlockedIpsWindow.showBlockedIps(core, parent.getShell());
}
});
final Menu menuIPFilter = new Menu(statusBar.getShell(), SWT.POP_UP);
ipBlocked.setMenu(menuIPFilter);
menuIPFilter.addListener(SWT.Show, new Listener() {
@Override
public void handleEvent(Event e) {
MenuItem[] oldItems = menuIPFilter.getItems();
for (int i = 0; i < oldItems.length; i++) {
oldItems[i].dispose();
}
if (!CoreFactory.isCoreRunning()) {
return;
}
Core core = CoreFactory.getSingleton();
final IpFilter ip_filter = core.getIpFilterManager().getIPFilter();
final MenuItem ipfEnable = new MenuItem(menuIPFilter, SWT.CHECK);
ipfEnable.setSelection(ip_filter.isEnabled());
Messages.setLanguageText(ipfEnable, "MyTorrentsView.menu.ipf_enable");
ipfEnable.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ip_filter.setEnabled(ipfEnable.getSelection());
}
});
final MenuItem ipfOptions = new MenuItem(menuIPFilter, SWT.PUSH);
Messages.setLanguageText(ipfOptions, "ipfilter.options");
ipfOptions.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
UIFunctions uif = UIFunctionsManager.getUIFunctions();
if (uif != null) {
uif.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_CONFIG, "ipfilter");
}
}
});
}
});
Utils.addAndFireParameterListener(mapConfigListeners, true, "Status Area Show IPF", new ParameterListener() {
@Override
public void parameterChanged(String parameterName) {
ipBlocked.setVisible(COConfigurationManager.getBooleanParameter(parameterName));
statusBar.layout();
}
});
// down speed
statusDown = new CLabelPadding(statusBar, borderFlag);
statusDown.setImage(imageLoader.getImage("down"));
// statusDown.setText(/*MessageText.getString("ConfigView.download.abbreviated") +*/"n/a");
Messages.setLanguageText(statusDown, "MainWindow.status.updowndetails.tooltip");
Listener lStats = new Listener() {
@Override
public void handleEvent(Event e) {
uiFunctions.getMDI().loadEntryByID(StatsView.VIEW_ID, true, false, "TransferStatsView");
}
};
statusUp = new CLabelPadding(statusBar, borderFlag);
statusUp.setImage(imageLoader.getImage("up"));
// statusUp.setText(/*MessageText.getString("ConfigView.upload.abbreviated") +*/"n/a");
Messages.setLanguageText(statusUp, "MainWindow.status.updowndetails.tooltip");
statusDown.addListener(SWT.MouseDoubleClick, lStats);
statusUp.addListener(SWT.MouseDoubleClick, lStats);
Listener lDHT = new Listener() {
@Override
public void handleEvent(Event e) {
uiFunctions.getMDI().loadEntryByID(StatsView.VIEW_ID, true, false, "DHTView");
}
};
dhtStatus.addListener(SWT.MouseDoubleClick, lDHT);
Listener lSR = new Listener() {
@Override
public void handleEvent(Event e) {
uiFunctions.getMDI().loadEntryByID(StatsView.VIEW_ID, true, false, "SpeedView");
OverallStats stats = StatsFactory.getStats();
if (stats == null) {
return;
}
long ratio = (1000 * stats.getUploadedBytes() / (stats.getDownloadedBytes() + 1));
if (ratio < 900) {
// Utils.launch(Constants.AZUREUS_WIKI + "Share_Ratio");
}
}
};
srStatus.addListener(SWT.MouseDoubleClick, lSR);
Listener lNAT = new ListenerNeedingCoreRunning() {
@Override
public void handleEvent(Core core, Event e) {
uiFunctions.getMDI().loadEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_CONFIG, true, false, ConfigSection.SECTION_CONNECTION);
if (PluginInitializer.getDefaultInterface().getConnectionManager().getNATStatus() != ConnectionManager.NAT_OK) {
Utils.launch(Constants.AZUREUS_WIKI + "NAT_problem");
}
}
};
natStatus.addListener(SWT.MouseDoubleClick, lNAT);
boolean bSpeedMenu = COConfigurationManager.getBooleanParameter("GUI_SWT_bOldSpeedMenu");
if (bSpeedMenu) {
// Status Bar Menu construction
final Menu menuUpSpeed = new Menu(statusBar.getShell(), SWT.POP_UP);
menuUpSpeed.addListener(SWT.Show, new Listener() {
@Override
public void handleEvent(Event e) {
if (!CoreFactory.isCoreRunning()) {
return;
}
Core core = CoreFactory.getSingleton();
GlobalManager globalManager = core.getGlobalManager();
SelectableSpeedMenu.generateMenuItems(menuUpSpeed, core, globalManager, true);
}
});
statusUp.setMenu(menuUpSpeed);
} else {
statusUp.addMouseListener(new MouseAdapter() {
@Override
public void mouseDown(MouseEvent e) {
if (!(e.button == 3 || (e.button == 1 && e.stateMask == SWT.CONTROL))) {
return;
}
Event event = new Event();
event.type = SWT.MouseUp;
event.widget = e.widget;
event.stateMask = e.stateMask;
event.button = e.button;
e.widget.getDisplay().post(event);
CoreWaiterSWT.waitForCoreRunning(new CoreRunningListener() {
@Override
public void coreRunning(Core core) {
SelectableSpeedMenu.invokeSlider(statusUp, core, true);
}
});
}
});
}
if (bSpeedMenu) {
final Menu menuDownSpeed = new Menu(statusBar.getShell(), SWT.POP_UP);
menuDownSpeed.addListener(SWT.Show, new Listener() {
@Override
public void handleEvent(Event e) {
if (!CoreFactory.isCoreRunning()) {
return;
}
Core core = CoreFactory.getSingleton();
GlobalManager globalManager = core.getGlobalManager();
SelectableSpeedMenu.generateMenuItems(menuDownSpeed, core, globalManager, false);
}
});
statusDown.setMenu(menuDownSpeed);
} else {
statusDown.addMouseListener(new MouseAdapter() {
@Override
public void mouseDown(MouseEvent e) {
if (!(e.button == 3 || (e.button == 1 && e.stateMask == SWT.CONTROL))) {
return;
}
Event event = new Event();
event.type = SWT.MouseUp;
event.widget = e.widget;
event.stateMask = e.stateMask;
event.button = e.button;
e.widget.getDisplay().post(event);
CoreWaiterSWT.waitForCoreRunning(new CoreRunningListener() {
@Override
public void coreRunning(Core core) {
SelectableSpeedMenu.invokeSlider(statusDown, core, false);
}
});
}
});
}
statusWarnings = new CLabelPadding(statusBar, borderFlag);
warningIcon = imageLoader.getImage("image.sidebar.vitality.alert");
warningGreyIcon = imageLoader.getImage("image.sidebar.vitality.alert-gray");
infoIcon = imageLoader.getImage("image.sidebar.vitality.info");
updateStatusWarnings(null, false);
Messages.setLanguageText(statusWarnings, "MainWindow.status.warning.tooltip");
alertHistoryListener = new AlertHistoryListener() {
@Override
public void alertHistoryAdded(LogAlert alert) {
updateStatusWarnings(alert, true);
}
@Override
public void alertHistoryRemoved(LogAlert alert) {
updateStatusWarnings(alert, false);
}
};
Alerts.addMessageHistoryListener(alertHistoryListener);
statusWarnings.addMouseListener(new MouseListener() {
@Override
public void mouseUp(MouseEvent e) {
if (e.button != 1) {
return;
}
if (SystemWarningWindow.numWarningWindowsOpen > 0) {
return;
}
ArrayList<LogAlert> alerts = Alerts.getUnviewedLogAlerts();
if (alerts.size() == 0) {
return;
}
Shell shell = statusWarnings.getShell();
Rectangle bounds = statusWarnings.getClientArea();
Point ptBottomRight = statusWarnings.toDisplay(bounds.x + bounds.width, bounds.y);
new SystemWarningWindow(alerts.get(0), ptBottomRight, shell, 0);
}
@Override
public void mouseDown(MouseEvent e) {
}
@Override
public void mouseDoubleClick(MouseEvent e) {
}
});
Menu menuStatusWarnings = new Menu(statusBar.getShell(), SWT.POP_UP);
statusWarnings.setMenu(menuStatusWarnings);
final MenuItem dismissAllItem = new MenuItem(menuStatusWarnings, SWT.PUSH);
menuStatusWarnings.addListener(SWT.Show, new Listener() {
@Override
public void handleEvent(Event e) {
dismissAllItem.setEnabled(Alerts.getUnviewedLogAlerts().size() > 0);
}
});
Messages.setLanguageText(dismissAllItem, "label.dismiss.all");
dismissAllItem.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
ArrayList<LogAlert> alerts = Alerts.getUnviewedLogAlerts();
for (LogAlert a : alerts) {
Alerts.markAlertAsViewed(a);
}
}
});
Utils.addAndFireParameterListener(mapConfigListeners, true, "status.rategraphs", new ParameterListener() {
@Override
public void parameterChanged(String parameterName) {
boolean doRateGraphs = COConfigurationManager.getBooleanParameter("status.rategraphs");
if (doRateGraphs) {
if (imgRec == null || imgRec.isDisposed()) {
imgRec = new Image(display, 100, 20);
GC gc = new GC(imgRec);
gc.setBackground(statusDown.getBackground());
gc.fillRectangle(0, 0, 100, 20);
gc.dispose();
statusDown.setBackgroundImage(imgRec);
}
if (imgSent == null || imgSent.isDisposed()) {
imgSent = new Image(display, 100, 20);
GC gc = new GC(imgSent);
gc.setBackground(statusUp.getBackground());
gc.fillRectangle(0, 0, 100, 20);
gc.dispose();
statusUp.setBackgroundImage(imgSent);
}
} else {
statusUp.setBackgroundImage(null);
statusDown.setBackgroundImage(null);
Utils.disposeSWTObjects(imgRec, imgSent);
imgRec = imgSent = null;
}
}
});
// ///////
progressListener = new ProgressListener();
PRManager.addListener(progressListener);
uiFunctions.getUIUpdater().addUpdater(this);
ArrayList<Runnable> list;
this_mon.enter();
try {
list = listRunAfterInit;
listRunAfterInit = null;
} finally {
this_mon.exit();
}
for (Runnable runnable : list) {
try {
runnable.run();
} catch (Exception e) {
Debug.out(e);
}
}
statusBar.layout(true);
return statusBar;
}
use of com.biglybt.ui.UIFunctions in project BiglyBT by BiglySoftware.
the class TagUIUtils method setupSideBarMenus.
public static void setupSideBarMenus(final MenuManager menuManager) {
com.biglybt.pif.ui.menus.MenuItem menuItem = menuManager.addMenuItem("sidebar." + MultipleDocumentInterface.SIDEBAR_HEADER_TRANSFERS, "ConfigView.section.style.TagInSidebar");
menuItem.setDisposeWithUIDetach(UIInstance.UIT_SWT);
menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_CHECK);
menuItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
boolean b = COConfigurationManager.getBooleanParameter("Library.TagInSideBar");
COConfigurationManager.setParameter("Library.TagInSideBar", !b);
}
});
menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {
@Override
public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
menu.setData(Boolean.valueOf(COConfigurationManager.getBooleanParameter("Library.TagInSideBar")));
}
});
// tag options
menuItem = menuManager.addMenuItem("sidebar." + MultipleDocumentInterface.SIDEBAR_HEADER_TRANSFERS, "label.tags");
menuItem.setDisposeWithUIDetach(UIInstance.UIT_SWT);
menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_MENU);
menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {
@Override
public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
menu.removeAllChildItems();
// manual
final TagType manual_tt = TagManagerFactory.getTagManager().getTagType(TagType.TT_DOWNLOAD_MANUAL);
com.biglybt.pif.ui.menus.MenuItem menuItem = menuManager.addMenuItem(menu, manual_tt.getTagTypeName(false));
menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_MENU);
menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {
@Override
public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
menu.removeAllChildItems();
final List<Tag> all_tags = manual_tt.getTags();
List<String> menu_names = new ArrayList<>();
Map<String, Tag> menu_name_map = new IdentityHashMap<>();
boolean all_visible = true;
boolean all_invisible = true;
boolean has_ut = false;
for (Tag t : all_tags) {
String name = t.getTagName(true);
menu_names.add(name);
menu_name_map.put(name, t);
if (t.isVisible()) {
all_invisible = false;
} else {
all_visible = false;
}
TagFeatureProperties props = (TagFeatureProperties) t;
TagProperty prop = props.getProperty(TagFeatureProperties.PR_UNTAGGED);
if (prop != null) {
Boolean b = prop.getBoolean();
if (b != null && b) {
has_ut = true;
}
}
}
com.biglybt.pif.ui.menus.MenuItem showAllItem = menuManager.addMenuItem(menu, "label.show.all");
showAllItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_PUSH);
showAllItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
for (Tag t : all_tags) {
t.setVisible(true);
}
}
});
com.biglybt.pif.ui.menus.MenuItem hideAllItem = menuManager.addMenuItem(menu, "popup.error.hideall");
hideAllItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_PUSH);
hideAllItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
for (Tag t : all_tags) {
t.setVisible(false);
}
}
});
com.biglybt.pif.ui.menus.MenuItem sepItem = menuManager.addMenuItem(menu, "sepm");
sepItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_SEPARATOR);
showAllItem.setEnabled(!all_visible);
hideAllItem.setEnabled(!all_invisible);
List<Object> menu_structure = MenuBuildUtils.splitLongMenuListIntoHierarchy(menu_names, TagUIUtils.MAX_TOP_LEVEL_TAGS_IN_MENU);
for (Object obj : menu_structure) {
List<Tag> bucket_tags = new ArrayList<>();
com.biglybt.pif.ui.menus.MenuItem parent_menu;
if (obj instanceof String) {
parent_menu = menu;
bucket_tags.add(menu_name_map.get((String) obj));
} else {
Object[] entry = (Object[]) obj;
List<String> tag_names = (List<String>) entry[1];
boolean sub_all_visible = true;
boolean sub_some_visible = false;
for (String name : tag_names) {
Tag tag = menu_name_map.get(name);
if (tag.isVisible()) {
sub_some_visible = true;
} else {
sub_all_visible = false;
}
bucket_tags.add(tag);
}
String mod;
if (sub_all_visible) {
mod = " (*)";
} else if (sub_some_visible) {
mod = " (+)";
} else {
mod = "";
}
parent_menu = menuManager.addMenuItem(menu, "!" + (String) entry[0] + mod + "!");
parent_menu.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_MENU);
}
for (final Tag tag : bucket_tags) {
com.biglybt.pif.ui.menus.MenuItem m = menuManager.addMenuItem(parent_menu, tag.getTagName(false));
m.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_CHECK);
m.setData(Boolean.valueOf(tag.isVisible()));
m.addListener(new MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
tag.setVisible(!tag.isVisible());
}
});
}
}
if (!has_ut) {
sepItem = menuManager.addMenuItem(menu, "sepu");
sepItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_SEPARATOR);
com.biglybt.pif.ui.menus.MenuItem m = menuManager.addMenuItem(menu, "label.untagged");
m.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_PUSH);
m.addListener(new MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
try {
String tag_name = MessageText.getString("label.untagged");
Tag ut_tag = manual_tt.getTag(tag_name, true);
if (ut_tag == null) {
ut_tag = manual_tt.createTag(tag_name, true);
}
TagFeatureProperties tp = (TagFeatureProperties) ut_tag;
tp.getProperty(TagFeatureProperties.PR_UNTAGGED).setBoolean(true);
} catch (TagException e) {
Debug.out(e);
}
}
});
}
}
});
menuItem = menuManager.addMenuItem(menu, "label.add.tag");
menuItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
createManualTag(null);
}
});
com.biglybt.pif.ui.menus.MenuItem sepItem = menuManager.addMenuItem(menu, "sep1");
sepItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_SEPARATOR);
// auto
menuItem = menuManager.addMenuItem(menu, "wizard.maketorrent.auto");
menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_MENU);
menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {
@Override
public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
menu.removeAllChildItems();
// autos
List<TagType> tag_types = TagManagerFactory.getTagManager().getTagTypes();
for (final TagType tag_type : tag_types) {
if (tag_type.getTagType() == TagType.TT_DOWNLOAD_CATEGORY) {
continue;
}
if (!tag_type.isTagTypeAuto()) {
continue;
}
if (tag_type.getTags().size() == 0) {
continue;
}
com.biglybt.pif.ui.menus.MenuItem menuItem = menuManager.addMenuItem(menu, tag_type.getTagTypeName(false));
menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_MENU);
menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {
@Override
public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
menu.removeAllChildItems();
final List<Tag> tags = tag_type.getTags();
com.biglybt.pif.ui.menus.MenuItem showAllItem = menuManager.addMenuItem(menu, "label.show.all");
showAllItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_PUSH);
showAllItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
for (Tag t : tags) {
t.setVisible(true);
}
}
});
com.biglybt.pif.ui.menus.MenuItem hideAllItem = menuManager.addMenuItem(menu, "popup.error.hideall");
hideAllItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_PUSH);
hideAllItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
for (Tag t : tags) {
t.setVisible(false);
}
}
});
boolean all_visible = true;
boolean all_invisible = true;
for (Tag t : tags) {
if (t.isVisible()) {
all_invisible = false;
} else {
all_visible = false;
}
}
showAllItem.setEnabled(!all_visible);
hideAllItem.setEnabled(!all_invisible);
com.biglybt.pif.ui.menus.MenuItem sepItem = menuManager.addMenuItem(menu, "sep2");
sepItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_SEPARATOR);
for (final Tag t : tags) {
com.biglybt.pif.ui.menus.MenuItem menuItem = menuManager.addMenuItem(menu, t.getTagName(false));
menuItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_CHECK);
menuItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
t.setVisible(menu.isSelected());
}
});
menuItem.addFillListener(new com.biglybt.pif.ui.menus.MenuItemFillListener() {
@Override
public void menuWillBeShown(com.biglybt.pif.ui.menus.MenuItem menu, Object data) {
menu.setData(t.isVisible());
}
});
}
}
});
}
}
});
sepItem = menuManager.addMenuItem(menu, "sep3");
sepItem.setStyle(com.biglybt.pif.ui.menus.MenuItem.STYLE_SEPARATOR);
menuItem = menuManager.addMenuItem(menu, "tag.show.stats");
menuItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
uiFunctions.getMDI().showEntryByID(StatsView.VIEW_ID, "TagStatsView");
}
});
menuItem = menuManager.addMenuItem(menu, "tag.show.overview");
menuItem.addListener(new com.biglybt.pif.ui.menus.MenuItemListener() {
@Override
public void selected(com.biglybt.pif.ui.menus.MenuItem menu, Object target) {
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
uiFunctions.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_TAGS);
}
});
}
});
CoreFactory.addCoreRunningListener(new CoreRunningListener() {
@Override
public void coreRunning(Core core) {
checkTagSharing(true);
}
});
}
use of com.biglybt.ui.UIFunctions in project BiglyBT by BiglySoftware.
the class TagUIUtils method createSideBarMenuItems.
public static void createSideBarMenuItems(final Menu menu, final Tag tag) {
int userMode = COConfigurationManager.getIntParameter("User Mode");
final TagType tag_type = tag.getTagType();
boolean needs_separator_next = false;
int countBefore = menu.getItemCount();
if (tag_type.hasTagTypeFeature(TagFeature.TF_RATE_LIMIT)) {
createTF_RateLimitMenuItems(menu, tag, tag_type, userMode);
}
if (tag_type.hasTagTypeFeature(TagFeature.TF_RUN_STATE)) {
createTF_RunState(menu, tag);
}
if (tag_type.hasTagTypeFeature(TagFeature.TF_FILE_LOCATION)) {
createTF_FileLocationMenuItems(menu, tag);
}
if (tag_type.hasTagTypeFeature(TagFeature.TF_EXEC_ON_ASSIGN)) {
final TagFeatureExecOnAssign tf_eoa = (TagFeatureExecOnAssign) tag;
int supported_actions = tf_eoa.getSupportedActions();
if (supported_actions != TagFeatureExecOnAssign.ACTION_NONE) {
final Menu eoa_menu = new Menu(menu.getShell(), SWT.DROP_DOWN);
MenuItem eoa_item = new MenuItem(menu, SWT.CASCADE);
Messages.setLanguageText(eoa_item, "label.exec.on.assign");
eoa_item.setMenu(eoa_menu);
int[] action_ids = { TagFeatureExecOnAssign.ACTION_APPLY_OPTIONS_TEMPLATE, TagFeatureExecOnAssign.ACTION_DESTROY, TagFeatureExecOnAssign.ACTION_START, TagFeatureExecOnAssign.ACTION_FORCE_START, TagFeatureExecOnAssign.ACTION_NOT_FORCE_START, TagFeatureExecOnAssign.ACTION_STOP, TagFeatureExecOnAssign.ACTION_PAUSE, TagFeatureExecOnAssign.ACTION_RESUME, TagFeatureExecOnAssign.ACTION_SCRIPT };
String[] action_keys = { "label.apply.options.template", "v3.MainWindow.button.delete", "v3.MainWindow.button.start", "v3.MainWindow.button.forcestart", "v3.MainWindow.button.notforcestart", "v3.MainWindow.button.stop", "v3.MainWindow.button.pause", "v3.MainWindow.button.resume", "label.script" };
for (int i = 0; i < action_ids.length; i++) {
final int action_id = action_ids[i];
if (tf_eoa.supportsAction(action_id)) {
if (action_id == TagFeatureExecOnAssign.ACTION_APPLY_OPTIONS_TEMPLATE) {
final MenuItem opts_item = new MenuItem(eoa_menu, SWT.CHECK);
opts_item.setText(MessageText.getString(action_keys[i]) + "...");
opts_item.setSelection(tf_eoa.getOptionsTemplateHandler().isActive());
opts_item.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
if (uiFunctions != null) {
uiFunctions.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_TORRENT_OPTIONS, tf_eoa.getOptionsTemplateHandler());
}
}
});
new MenuItem(eoa_menu, SWT.SEPARATOR);
} else if (action_id == TagFeatureExecOnAssign.ACTION_SCRIPT) {
final MenuItem action_item = new MenuItem(eoa_menu, SWT.PUSH);
String script = tf_eoa.getActionScript();
if (script.length() > 23) {
script = script.substring(0, 20) + "...";
}
String msg = MessageText.getString(action_keys[i]);
if (script.length() > 0) {
msg += ": " + script;
}
msg += "...";
action_item.setText(msg);
action_item.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
String msg = MessageText.getString("UpdateScript.message");
SimpleTextEntryWindow entryWindow = new SimpleTextEntryWindow("UpdateScript.title", "!" + msg + "!");
entryWindow.setPreenteredText(tf_eoa.getActionScript(), false);
entryWindow.selectPreenteredText(true);
entryWindow.prompt(new UIInputReceiverListener() {
@Override
public void UIInputReceiverClosed(UIInputReceiver entryWindow) {
if (entryWindow.hasSubmittedInput()) {
String text = entryWindow.getSubmittedInput().trim();
tf_eoa.setActionScript(text);
}
}
});
}
});
} else {
final MenuItem action_item = new MenuItem(eoa_menu, SWT.CHECK);
Messages.setLanguageText(action_item, action_keys[i]);
action_item.setSelection(tf_eoa.isActionEnabled(action_id));
action_item.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
tf_eoa.setActionEnabled(action_id, action_item.getSelection());
}
});
}
}
}
}
}
if (tag instanceof TagDownload) {
needs_separator_next = true;
MenuItem itemOptions = new MenuItem(menu, SWT.PUSH);
final Set<DownloadManager> dms = ((TagDownload) tag).getTaggedDownloads();
Messages.setLanguageText(itemOptions, "cat.options");
itemOptions.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
if (uiFunctions != null) {
uiFunctions.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_TORRENT_OPTIONS, dms.toArray(new DownloadManager[dms.size()]));
}
}
});
if (dms.size() == 0) {
itemOptions.setEnabled(false);
}
}
if (userMode > 0) {
if (tag_type.hasTagTypeFeature(TagFeature.TF_PROPERTIES)) {
createTFProperitesMenuItems(menu, tag);
}
}
if (menu.getItemCount() > countBefore) {
needs_separator_next = true;
}
if (needs_separator_next) {
new MenuItem(menu, SWT.SEPARATOR);
needs_separator_next = false;
}
if (tag_type.getTagType() == TagType.TT_DOWNLOAD_MANUAL) {
needs_separator_next = true;
MenuItem search = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(search, "tag.search");
search.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
UIFunctionsManager.getUIFunctions().doSearch("tag:" + tag.getTagName(true));
}
});
}
// share with friends
addShareWithFriendsMenuItems(menu, tag, tag_type);
if (tag_type.hasTagTypeFeature(TagFeature.TF_RSS_FEED)) {
final TagFeatureRSSFeed tfrss = (TagFeatureRSSFeed) tag;
// rss feed
final MenuItem rssOption = new MenuItem(menu, SWT.CHECK);
rssOption.setSelection(tfrss.isTagRSSFeedEnabled());
Messages.setLanguageText(rssOption, "cat.rss.gen");
rssOption.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
boolean set = rssOption.getSelection();
tfrss.setTagRSSFeedEnabled(set);
}
});
}
if (tag_type.hasTagTypeFeature(TagFeature.TF_XCODE)) {
createXCodeMenuItems(menu, tag);
}
needs_separator_next = true;
if (tag_type.getTagType() == TagType.TT_DOWNLOAD_MANUAL) {
MenuBuildUtils.addChatMenu(menu, "label.chat", getChatKey(tag));
}
MenuItem itemShowStats = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemShowStats, "tag.show.stats");
itemShowStats.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
uiFunctions.getMDI().loadEntryByID(StatsView.VIEW_ID, true, false, "TagStatsView");
}
});
if (tag.getTaggableTypes() == Taggable.TT_DOWNLOAD) {
MenuItem itemShowFiles = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemShowFiles, "menu.show.files");
itemShowFiles.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
showFilesView((TagDownload) tag);
}
});
}
if (needs_separator_next) {
new MenuItem(menu, SWT.SEPARATOR);
needs_separator_next = false;
}
boolean auto = tag_type.isTagTypeAuto();
boolean closable = auto;
if (tag.getTaggableTypes() == Taggable.TT_DOWNLOAD) {
// extended closable tags to include manual ones due to user request
closable = true;
}
Menu[] menuShowHide = { null };
if (closable) {
createCloseableMenuItems(menu, tag, tag_type, menuShowHide, needs_separator_next);
}
if (!auto) {
createNonAutoMenuItems(menu, tag, tag_type, menuShowHide);
}
if (tag_type.getTagType() == TagType.TT_DOWNLOAD_MANUAL) {
MenuItem itemExport = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(itemExport, "Subscription.menu.export");
itemExport.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
export(Arrays.asList(tag));
}
});
}
MenuItem menuSettings = new MenuItem(menu, SWT.PUSH);
Messages.setLanguageText(menuSettings, "TagSettingsView.title");
menuSettings.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
UIFunctions uiFunctions = UIFunctionsManager.getUIFunctions();
uiFunctions.getMDI().showEntryByID(MultipleDocumentInterface.SIDEBAR_SECTION_TAGS, tag);
}
});
com.biglybt.pif.ui.menus.MenuItem[] items = MenuItemManager.getInstance().getAllAsArray(MenuManager.MENU_TAG_CONTEXT);
if (items.length > 0) {
MenuFactory.addSeparatorMenuItem(menu);
// TODO: Don't send Tag.. send a yet-to-be-created plugin interface version of Tag
MenuBuildUtils.addPluginMenuItems(items, menu, true, true, new MenuBuildUtils.MenuItemPluginMenuControllerImpl(new Tag[] { tag }));
}
}
use of com.biglybt.ui.UIFunctions in project BiglyBT by BiglySoftware.
the class PlatformManagerUnixPlugin method showScriptManualUpdateDialog.
private void showScriptManualUpdateDialog(String newFilePath, String oldFilePath, final int version) {
final UIFunctions uif = UIFunctionsManager.getUIFunctions();
if (uif != null) {
final String sCopyLine = "cp \"" + newFilePath + "\" \"" + oldFilePath + "\"";
uif.promptUser(MessageText.getString("unix.script.new.title"), MessageText.getString("unix.script.new.text", new String[] { newFilePath, sCopyLine }), new String[] { MessageText.getString("unix.script.new.button.quit"), MessageText.getString("unix.script.new.button.continue"), MessageText.getString("unix.script.new.button.asknomore") }, 0, null, null, false, 0, new UserPrompterResultListener() {
@Override
public void prompterClosed(int answer) {
if (answer == 0) {
System.out.println("The line you should run:\n" + sCopyLine);
uif.dispose(false, false);
} else if (answer == 2) {
COConfigurationManager.setParameter("unix.script.lastaskversion", version);
}
}
});
} else {
System.out.println("NO UIF");
}
}
Aggregations