Dynamic Busy Status

This also cleans up the UI for the Dark Mode theme
This commit is contained in:
Konloch 2021-07-04 02:25:16 -07:00
parent c0eb9e944e
commit 0d8280b0b9
3 changed files with 35 additions and 40 deletions

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,7 @@ import java.awt.KeyboardFocusManager;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import javax.swing.*; import javax.swing.*;
@ -64,7 +65,7 @@ public class MainViewerGUI extends JFrame
{ {
public AboutWindow aboutWindow = new AboutWindow(); public AboutWindow aboutWindow = new AboutWindow();
public boolean isMaximized; public boolean isMaximized;
public final JMenuItem[] waitIcons; public final List<JMenuItem> waitIcons = new ArrayList<>();
//main UI components //main UI components
private static final ArrayList<VisibleComponent> uiComponents = new ArrayList<>(); private static final ArrayList<VisibleComponent> uiComponents = new ArrayList<>();
@ -271,15 +272,6 @@ public class MainViewerGUI extends JFrame
buildObfuscateMenu(); buildObfuscateMenu();
defaultSettings(); defaultSettings();
waitIcons = new JMenuItem[10];
for (int i = 0; i < 10; i++)
{
waitIcons[i] = new JMenuItem("");
waitIcons[i].setMaximumSize(new Dimension(20, 50));
waitIcons[i].setEnabled(false);
rootMenu.add(waitIcons[i]);
}
setTitle("Bytecode Viewer " + VERSION + " - https://bytecodeviewer.com | https://the.bytecode.club - @Konloch"); setTitle("Bytecode Viewer " + VERSION + " - https://bytecodeviewer.com | https://the.bytecode.club - @Konloch");
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS)); getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.X_AXIS));
@ -745,37 +737,39 @@ public class MainViewerGUI extends JFrame
{ {
SwingUtilities.invokeLater(()-> SwingUtilities.invokeLater(()->
{ {
for (JMenuItem waitIcon : waitIcons) int length = waitIcons.size();
{ for (int i = 0; i < length; i++)
waitIcon.setIcon(null); updateBusyStatus(false);
waitIcon.updateUI();
}
}); });
} }
public synchronized void updateBusyStatus(final boolean busy) { public synchronized void updateBusyStatus(final boolean busy) {
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() ->
if (busy) { {
for (int i = 0; i < 10; i++) { if (busy)
if (waitIcons[i].getIcon() == null) { {
try { JMenuItem waitIcon = new JMenuItem("");
waitIcons[i].setIcon(Resources.busyIcon); waitIcon.setMaximumSize(new Dimension(20, 50));
} catch (NullPointerException e) { waitIcon.setEnabled(false);
waitIcons[i].setIcon(Resources.busyB64Icon); try {
} waitIcon.setIcon(Resources.busyIcon);
waitIcons[i].updateUI(); } catch (NullPointerException e) {
break; waitIcon.setIcon(Resources.busyB64Icon);
}
}
} else {
for (int i = 0; i < 10; i++) {
if (waitIcons[i].getIcon() != null) {
waitIcons[i].setIcon(null);
waitIcons[i].updateUI();
break;
}
} }
rootMenu.add(waitIcon);
waitIcons.add(waitIcon);
} }
else
{
if(waitIcons.isEmpty())
return;
JMenuItem waitIcon = waitIcons.get(0);
waitIcons.remove(0);
rootMenu.remove(waitIcon);
}
rootMenu.updateUI();
}); });
} }

View File

@ -81,8 +81,6 @@ public class ResourceViewProcessing extends PaneUpdaterThread
} }
else else
{ {
updateUpdaterTextArea = new SearchableRSyntaxTextArea();
final Decompiler decompiler = resourceViewPanel.decompiler; final Decompiler decompiler = resourceViewPanel.decompiler;
//perform decompiling inside of this thread //perform decompiling inside of this thread
@ -91,6 +89,8 @@ public class ResourceViewProcessing extends PaneUpdaterThread
//set the swing components on the swing thread //set the swing components on the swing thread
SwingUtilities.invokeLater(() -> SwingUtilities.invokeLater(() ->
{ {
updateUpdaterTextArea = new SearchableRSyntaxTextArea();
Configuration.rstaTheme.apply(updateUpdaterTextArea); Configuration.rstaTheme.apply(updateUpdaterTextArea);
resourceViewPanel.textArea = updateUpdaterTextArea; resourceViewPanel.textArea = updateUpdaterTextArea;