public void setDisabled(final boolean disabled) { if (inSetDisabled || skinObject == null) { return; } inSetDisabled = true; try { if (disabled == isDisabled()) { return; } if (skinObject instanceof SWTSkinObjectButton) { lastDisabledState = disabled; Utils.execSWTThreadLater( 100, new AERunnable() { public void runSupport() { if (lastDisabledState == isDisabled()) { return; } ((SWTSkinObjectButton) skinObject).getControl().setEnabled(!lastDisabledState); } }); } String suffix = disabled ? "-disabled" : ""; skinObject.switchSuffix(suffix, 1, false); for (ButtonListenerAdapter l : listeners) { l.disabledStateChanged(SWTSkinButtonUtility.this, disabled); } } finally { inSetDisabled = false; } }
public SWTSkinButtonUtility(SWTSkinObject skinObject, String imageViewID) { this.skinObject = skinObject; this.imageViewID = imageViewID; if (skinObject == null) { Debug.out("Can't make button out of null skinObject"); return; } if (skinObject.getControl() == null) { Debug.out("Can't make button out of null skinObject control"); return; } if (skinObject instanceof SWTSkinObjectButton) { return; } Listener l = new Listener() { boolean bDownPressed; private TimerEvent timerEvent; public void handleEvent(Event event) { if (event.type == SWT.MouseDown) { if (timerEvent == null) { timerEvent = SimpleTimer.addEvent( "MouseHold", SystemTime.getOffsetTime(1000), new TimerEventPerformer() { public void perform(TimerEvent event) { timerEvent = null; if (!bDownPressed) { return; } bDownPressed = false; boolean stillPressed = true; for (ButtonListenerAdapter l : listeners) { stillPressed &= !l.held(SWTSkinButtonUtility.this); } bDownPressed = stillPressed; } }); } bDownPressed = true; return; } else { if (timerEvent != null) { timerEvent.cancel(); timerEvent = null; } if (!bDownPressed) { return; } } bDownPressed = false; if (isDisabled()) { return; } for (ButtonListenerAdapter l : listeners) { l.pressed( SWTSkinButtonUtility.this, SWTSkinButtonUtility.this.skinObject, event.stateMask); } } }; if (skinObject instanceof SWTSkinObjectContainer) { Utils.addListenerAndChildren((Composite) skinObject.getControl(), SWT.MouseUp, l); Utils.addListenerAndChildren((Composite) skinObject.getControl(), SWT.MouseDown, l); } else { skinObject.getControl().addListener(SWT.MouseUp, l); skinObject.getControl().addListener(SWT.MouseDown, l); } }
public boolean isDisabled() { return skinObject == null ? true : skinObject.getSuffix().indexOf("-disabled") >= 0; }
// @see com.aelitis.azureus.ui.swt.UIFunctionsSWT#showCoreWaitDlg() public Shell showCoreWaitDlg() { final SkinnedDialog closeDialog = new SkinnedDialog( "skin3_dlg_coreloading", "coreloading.body", SWT.TITLE | SWT.BORDER | SWT.APPLICATION_MODAL); closeDialog.setTitle(MessageText.getString("dlg.corewait.title")); SWTSkin skin = closeDialog.getSkin(); SWTSkinObjectButton soButton = (SWTSkinObjectButton) skin.getSkinObject("close"); final SWTSkinObjectText soWaitTask = (SWTSkinObjectText) skin.getSkinObject("task"); final SWTSkinObject soWaitProgress = skin.getSkinObject("progress"); if (soWaitProgress != null) { soWaitProgress .getControl() .addPaintListener( new PaintListener() { public void paintControl(PaintEvent e) { Control c = (Control) e.widget; Point size = c.getSize(); e.gc.setBackground(ColorCache.getColor(e.display, "#23a7df")); Object data = soWaitProgress.getData("progress"); if (data instanceof Long) { int waitProgress = ((Long) data).intValue(); int breakX = size.x * waitProgress / 100; e.gc.fillRectangle(0, 0, breakX, size.y); e.gc.setBackground(ColorCache.getColor(e.display, "#cccccc")); e.gc.fillRectangle(breakX, 0, size.x - breakX, size.y); } } }); } if (!AzureusCoreFactory.isCoreRunning()) { final Initializer initializer = Initializer.getLastInitializer(); if (initializer != null) { initializer.addListener( new InitializerListener() { public void reportPercent(final int percent) { Utils.execSWTThread( new AERunnable() { public void runSupport() { if (soWaitProgress != null && !soWaitProgress.isDisposed()) { soWaitProgress.setData("progress", new Long(percent)); soWaitProgress.getControl().redraw(); soWaitProgress.getControl().update(); } } }); if (percent > 100) { initializer.removeListener(this); } } public void reportCurrentTask(String currentTask) { if (soWaitTask != null && !soWaitTask.isDisposed()) { soWaitTask.setText(currentTask); } } }); } } if (soButton != null) { soButton.addSelectionListener( new ButtonListenerAdapter() { public void pressed( SWTSkinButtonUtility buttonUtility, SWTSkinObject skinObject, int stateMask) { closeDialog.close(); } }); } closeDialog.addCloseListener( new SkinnedDialogClosedListener() { public void skinDialogClosed(SkinnedDialog dialog) {} }); closeDialog.open(); return closeDialog.getShell(); }