Skip to content

Commit

Permalink
Merge pull request #381 from greboid/dev4
Browse files Browse the repository at this point in the history
Add utility method for swing workers.
  • Loading branch information
csmith committed Jan 20, 2015
2 parents 41471b6 + d50a65d commit de32b09
Show file tree
Hide file tree
Showing 7 changed files with 50 additions and 24 deletions.
36 changes: 34 additions & 2 deletions ui_swing/src/com/dmdirc/addons/ui_swing/UIUtilities.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@

import com.dmdirc.DMDircMBassador;
import com.dmdirc.addons.ui_swing.components.DMDircUndoableEditListener;
import com.dmdirc.addons.ui_swing.components.RunnableLoggingSwingWorker;
import com.dmdirc.addons.ui_swing.components.RunnableSwingWorker;
import com.dmdirc.util.colours.Colour;

Expand All @@ -39,6 +40,7 @@
import java.lang.reflect.InvocationTargetException;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.function.Consumer;

import javax.swing.BorderFactory;
import javax.swing.JComboBox;
Expand Down Expand Up @@ -246,8 +248,38 @@ public static void invokeLater(final Runnable runnable) {
}
}

public static void invokeOffEDT(final Runnable runnable) {
new RunnableSwingWorker<Void,Void>(runnable).execute();
/**
* Invokes something off the EDT, ignoring any exceptions that occur.
*
* @param runnable Runnable to execute off the EDT
*/
public static void invokeOffEDTNoLogging(final Runnable runnable) {
new RunnableSwingWorker<>(runnable).execute();
}

/**
* Invokes something off the EDT, logging any exceptions that occur.
*
* @param eventBus Eventbus to post errors to
* @param runnable Runnable to execute off the EDT
*/
public static void invokeOffEDT(final DMDircMBassador eventBus, final Runnable runnable) {
new RunnableLoggingSwingWorker<Void, Void>(eventBus, runnable).execute();
}

/**
* Invokes something off the EDT, handling the result when its finished on the EDT, logging
* any exceptions that occur.
*
* @param eventBus Eventbus to post errors to
* @param runnable Runnable to execute off the EDT
* @param consumer Consumer to finalise the runnable on the EDT
*
* @param <T> Type the consumer takes
*/
public static <T> void invokeOffEDT(final DMDircMBassador eventBus, final Runnable runnable,
final Consumer<T> consumer) {
new RunnableLoggingSwingWorker<>(eventBus, runnable, consumer).execute();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
package com.dmdirc.addons.ui_swing.components;

import com.dmdirc.DMDircMBassador;
import com.dmdirc.addons.ui_swing.UIUtilities;
import com.dmdirc.addons.ui_swing.components.renderers.FontListCellRenderer;

import java.awt.Font;
Expand Down Expand Up @@ -53,9 +54,9 @@ public FontPicker(final DMDircMBassador eventBus, final String fontFamily) {
this.fontFamily = fontFamily;

setRenderer(new FontListCellRenderer(getRenderer()));
new RunnableLoggingSwingWorker<String[], String[]>(eventBus,
UIUtilities.<String[]>invokeOffEDT(eventBus,
() -> GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(),
this::loadFonts).execute();
this::loadFonts);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
package com.dmdirc.addons.ui_swing.components.addonpanel;

import com.dmdirc.DMDircMBassador;
import com.dmdirc.addons.ui_swing.components.RunnableLoggingSwingWorker;
import com.dmdirc.addons.ui_swing.UIUtilities;
import com.dmdirc.addons.ui_swing.components.addonbrowser.BrowserWindow;
import com.dmdirc.addons.ui_swing.components.addonbrowser.DataLoaderWorkerFactory;
import com.dmdirc.addons.ui_swing.components.text.TextLabel;
Expand Down Expand Up @@ -128,14 +128,13 @@ public boolean isCellEditable(final int row, final int column) {
* Populates the list in a background thread.
*/
protected void load() {
new RunnableLoggingSwingWorker<>(eventBus,
UIUtilities.invokeOffEDT(eventBus,
() -> populateList(addonList),
value -> {
scrollPane.setViewportView(addonList);
addonList.getSelectionModel().addListSelectionListener(this);
addonList.getSelectionModel().setSelectionInterval(0, 0);
}
).execute();
});
}

/** Lays out the dialog. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import com.dmdirc.DMDircMBassador;
import com.dmdirc.addons.ui_swing.Apple;
import com.dmdirc.addons.ui_swing.UIUtilities;
import com.dmdirc.addons.ui_swing.components.RunnableLoggingSwingWorker;
import com.dmdirc.commandparser.parsers.CommandParser;
import com.dmdirc.interfaces.CommandController;
import com.dmdirc.interfaces.WindowModel;
Expand Down Expand Up @@ -155,10 +154,8 @@ protected void addTabHandler() {
@Override
public void actionPerformed(final ActionEvent e) {
localTarget.setEditable(false);
new RunnableLoggingSwingWorker<>(eventBus,
() -> doTabCompletion(false),
value -> localTarget.setEditable(true)
).execute();
UIUtilities.invokeOffEDT(eventBus, () -> doTabCompletion(false),
value -> localTarget.setEditable(true));
}
});
localTarget.getActionMap().put("insert-shift-tab",
Expand All @@ -169,10 +166,9 @@ public void actionPerformed(final ActionEvent e) {
@Override
public void actionPerformed(final ActionEvent e) {
localTarget.setEditable(false);
new RunnableLoggingSwingWorker<>(eventBus,
UIUtilities.invokeOffEDT(eventBus,
() -> doTabCompletion(true),
value -> localTarget.setEditable(true)
).execute();
value -> localTarget.setEditable(true));
}
});
localTarget.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).
Expand Down Expand Up @@ -213,7 +209,7 @@ public void actionPerformed(final ActionEvent e) {
"Event is not from known source.");
}
if (source.isEditable()) {
new RunnableLoggingSwingWorker<>(eventBus, () -> enterPressed(line)).execute();
UIUtilities.invokeOffEDT(eventBus, () -> enterPressed(line));
}
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ private void initServerMenu() {
final JMenuItem exit = new JMenuItem();
exit.setText("Exit");
exit.setMnemonic('x');
exit.addActionListener(e -> UIUtilities.invokeOffEDT(lifecycleController::quit));
exit.addActionListener(e -> UIUtilities.invokeOffEDTNoLogging(lifecycleController::quit));
add(exit);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import com.dmdirc.addons.ui_swing.UIUtilities;
import com.dmdirc.addons.ui_swing.components.IconManager;
import com.dmdirc.addons.ui_swing.components.ListScroller;
import com.dmdirc.addons.ui_swing.components.RunnableLoggingSwingWorker;
import com.dmdirc.addons.ui_swing.components.SupplierLoggingSwingWorker;
import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
import com.dmdirc.addons.ui_swing.dialogs.updater.SwingRestartDialog;
Expand Down Expand Up @@ -232,11 +231,11 @@ public void actionPerformed(final ActionEvent actionEvent) {
saveOptions();
}

new RunnableLoggingSwingWorker<>(eventBus, () -> {
UIUtilities.invokeOffEDT(eventBus, () -> {
if (manager != null) {
manager.dismiss();
}
}).execute();
});
dispose();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import com.dmdirc.DMDircMBassador;
import com.dmdirc.addons.ui_swing.UIUtilities;
import com.dmdirc.addons.ui_swing.components.PackingTable;
import com.dmdirc.addons.ui_swing.components.RunnableLoggingSwingWorker;
import com.dmdirc.addons.ui_swing.components.text.TextLabel;
import com.dmdirc.addons.ui_swing.dialogs.StandardDialog;
import com.dmdirc.addons.ui_swing.injection.DialogModule.ForUpdates;
Expand Down Expand Up @@ -182,10 +181,10 @@ public void actionPerformed(final ActionEvent e) {

header.setText("DMDirc is updating the following components:");

new RunnableLoggingSwingWorker<>(eventBus,
UIUtilities.invokeOffEDT(eventBus,
() -> ((UpdateTableModel) table.getModel()).getUpdates().stream()
.filter(((UpdateTableModel) table.getModel())::isEnabled)
.forEach(updateManager::install)).execute();
.forEach(updateManager::install));

if (updateManager.getManagerStatus() == UpdateManagerStatus.IDLE_RESTART_NEEDED) {
restartDialogProvider.displayOrRequestFocus();
Expand Down

0 comments on commit de32b09

Please sign in to comment.