* Better ui with more infos

* Remove revision from protocol since it's not use anymore
This commit is contained in:
Laurent Clouet
2016-10-12 00:34:51 +02:00
parent 09eb650da2
commit 07f9662c00
12 changed files with 543 additions and 356 deletions

View File

@@ -19,11 +19,9 @@
package com.sheepit.client.standalone.swing.activity;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.Insets;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
@@ -76,7 +74,6 @@ public class Settings implements Activity {
private boolean haveAutoStarted;
private JLabel tileSizePadding;
private JTextField tileSizeValue;
private JLabel tileSizeLabel;
private JCheckBox customTileSize;
@@ -96,85 +93,49 @@ public class Settings implements Activity {
List<GPUDevice> gpus = GPU.listDevices();
GridBagConstraints constraints = new GridBagConstraints();
int columns = 4 + (gpus != null ? gpus.size() : 0);
int currentRow = 0;
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
ImageIcon image = new ImageIcon(getClass().getResource("/title.png"));
constraints.fill = GridBagConstraints.CENTER;
JLabel labelImage = new JLabel(image);
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1.0;
constraints.weighty = 3.0;
constraints.gridwidth = columns - 2;
constraints.gridx = 1;
constraints.gridwidth = 2;
constraints.gridx = 0;
constraints.gridy = currentRow;
parent.getContentPane().add(labelImage, constraints);
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
JLabel loginLabel = new JLabel("Login:");
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weighty = 0.0;
constraints.gridwidth = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(loginLabel, constraints);
// authentication
JPanel authentification_panel = new JPanel(new GridLayout(2, 2));
authentification_panel.setBorder(BorderFactory.createTitledBorder("Authentification"));
JLabel loginLabel = new JLabel("Login :");
login = new JTextField();
login.setText(parent.getConfiguration().login());
login.setColumns(20);
login.addKeyListener(new CheckCanStart());
constraints.gridwidth = columns - 3;
constraints.gridx = 2;
parent.getContentPane().add(login, constraints);
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
JLabel passwordLabel = new JLabel("Password:");
constraints.weighty = 0.0;
constraints.gridwidth = 1;
constraints.gridx = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(passwordLabel, constraints);
JLabel passwordLabel = new JLabel("Password :");
password = new JPasswordField();
password.setText(parent.getConfiguration().password());
password.setColumns(10);
password.addKeyListener(new CheckCanStart());
constraints.gridwidth = columns - 3;
constraints.gridx = 2;
parent.getContentPane().add(password, constraints);
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
authentification_panel.add(loginLabel);
authentification_panel.add(login);
JLabel proxyLabel = new JLabel("Proxy:");
proxyLabel.setToolTipText("http://login:password@host:port");
constraints.gridwidth = 1;
constraints.gridx = 1;
authentification_panel.add(passwordLabel);
authentification_panel.add(password);
constraints.gridx = 0;
constraints.gridy = currentRow;
parent.getContentPane().add(proxyLabel, constraints);
proxy = new JTextField();
proxy.setToolTipText("http://login:password@host:port");
proxy.setText(parent.getConfiguration().getProxy());
proxy.addKeyListener(new CheckCanStart());
constraints.gridwidth = columns - 3;
constraints.gridx = 2;
parent.getContentPane().add(proxy, constraints);
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
JLabel cacheLabel = new JLabel("Working directory:");
constraints.gridwidth = 1;
constraints.gridx = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(cacheLabel, constraints);
constraints.fill = GridBagConstraints.HORIZONTAL;
parent.getContentPane().add(authentification_panel, constraints);
// directory
JPanel directory_panel = new JPanel(new GridLayout(1, 3));
directory_panel.setBorder(BorderFactory.createTitledBorder("Cache"));
JLabel cacheLabel = new JLabel("Working directory :");
directory_panel.add(cacheLabel);
String destination = DUMMY_CACHE_DIR;
if (config.getUserSpecifiedACacheDir()) {
destination = config.getStorageDir().getName();
@@ -193,17 +154,21 @@ public class Settings implements Activity {
openButton.addActionListener(new ChooseFileAction());
cacheDirWrapper.add(openButton);
constraints.gridwidth = columns - 3;
constraints.gridx = 2;
parent.getContentPane().add(cacheDirWrapper, constraints);
directory_panel.add(cacheDirWrapper);
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
JLabel computeMethodLabel = new JLabel("Use:");
constraints.gridx = 1;
currentRow++;
constraints.gridx = 0;
constraints.gridy = currentRow;
parent.getContentPane().add(computeMethodLabel, constraints);
constraints.gridwidth = 2;
parent.getContentPane().add(directory_panel, constraints);
// compute devices
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints compute_devices_constraints = new GridBagConstraints();
JPanel compute_devices_panel = new JPanel(gridbag);
compute_devices_panel.setBorder(BorderFactory.createTitledBorder("Compute devices"));
ComputeType method = config.getComputeMethod();
useCPU = new JCheckBox("CPU");
@@ -221,34 +186,34 @@ public class Settings implements Activity {
useCPU.setSelected(false);
gpuChecked = true;
}
useCPU.addActionListener(new CpuChangeAction());
constraints.gridwidth = Math.max(1, columns - (gpus != null ? gpus.size() : 0) - 3);
constraints.gridx = 2;
parent.getContentPane().add(useCPU, constraints);
constraints.gridwidth = 1;
if (gpus != null) {
for (int i=0; i < gpus.size(); i++) {
GPUDevice gpu = gpus.get(i);
JCheckBoxGPU gpuCheckBox = new JCheckBoxGPU(gpu);
gpuCheckBox.setToolTipText(gpu.getCudaName());
if (gpuChecked) {
GPUDevice config_gpu = config.getGPUDevice();
if (config_gpu != null && config_gpu.getCudaName().equals(gpu.getCudaName())) {
gpuCheckBox.setSelected(gpuChecked);
}
compute_devices_constraints.gridx = 1;
compute_devices_constraints.gridy = 0;
compute_devices_constraints.fill = GridBagConstraints.BOTH;
compute_devices_constraints.weightx = 1.0;
compute_devices_constraints.weighty = 1.0;
gridbag.setConstraints(useCPU, compute_devices_constraints);
compute_devices_panel.add(useCPU);
for (GPUDevice gpu : gpus) {
JCheckBoxGPU gpuCheckBox = new JCheckBoxGPU(gpu);
gpuCheckBox.setToolTipText(gpu.getCudaName());
if (gpuChecked) {
GPUDevice config_gpu = config.getGPUDevice();
if (config_gpu != null && config_gpu.getCudaName().equals(gpu.getCudaName())) {
gpuCheckBox.setSelected(gpuChecked);
}
gpuCheckBox.addActionListener(new GpuChangeAction());
constraints.gridx = i + 3;
parent.getContentPane().add(gpuCheckBox, constraints);
useGPUs.add(gpuCheckBox);
}
gpuCheckBox.addActionListener(new GpuChangeAction());
compute_devices_constraints.gridy++;
gridbag.setConstraints(gpuCheckBox, compute_devices_constraints);
compute_devices_panel.add(gpuCheckBox);
useGPUs.add(gpuCheckBox);
}
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
CPU cpu = new CPU();
if (cpu.cores() > 1) { // if only one core is available, no need to show the choice
cpuCores = new JSlider(1, cpu.cores());
@@ -258,32 +223,48 @@ public class Settings implements Activity {
cpuCores.setPaintLabels(true);
cpuCores.setValue(config.getNbCores() != -1 ? config.getNbCores() : cpuCores.getMaximum());
JLabel coreLabel = new JLabel("CPU cores:");
constraints.gridx = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(coreLabel, constraints);
constraints.gridwidth = columns - 3;
constraints.gridx = 2;
parent.getContentPane().add(cpuCores, constraints);
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
compute_devices_constraints.weightx = 1.0 / gpus.size();
compute_devices_constraints.gridx = 0;
compute_devices_constraints.gridy++;
gridbag.setConstraints(coreLabel, compute_devices_constraints);
compute_devices_panel.add(coreLabel);
compute_devices_constraints.gridx = 1;
compute_devices_constraints.weightx = 1.0;
gridbag.setConstraints(cpuCores, compute_devices_constraints);
compute_devices_panel.add(cpuCores);
}
customTileSize = new JCheckBox("Custom render tile size", config.getTileSize() != -1);
constraints.gridx = 2;
currentRow++;
constraints.gridx = 0;
constraints.gridy = currentRow;
parent.getContentPane().add(customTileSize, constraints);
constraints.gridwidth = 2;
parent.getContentPane().add(compute_devices_panel, constraints);
// other
JPanel advanced_panel = new JPanel(new GridLayout(3, 2));
advanced_panel.setBorder(BorderFactory.createTitledBorder("Advanced options"));
JLabel proxyLabel = new JLabel("Proxy :");
proxyLabel.setToolTipText("http://login:password@host:port");
proxy = new JTextField();
proxy.setToolTipText("http://login:password@host:port");
proxy.setText(parent.getConfiguration().getProxy());
proxy.addKeyListener(new CheckCanStart());
advanced_panel.add(proxyLabel);
advanced_panel.add(proxy);
JLabel customTileSizeLabel = new JLabel("Custom render tile size");
customTileSize = new JCheckBox("", config.getTileSize() != -1);
advanced_panel.add(customTileSizeLabel);
advanced_panel.add(customTileSize);
customTileSize.addActionListener(new TileSizeChange());
tileSizePadding = parent.addPaddingReturn(1, ++currentRow, columns - 2, 1);
parent.getContentPane().add(tileSizePadding, parent.addPaddingConstraints(1, ++currentRow, columns - 2, 1));
++currentRow;
tileSizeLabel = new JLabel("Tile Size:");
constraints.gridwidth = columns - 3;
constraints.gridx = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(tileSizeLabel, constraints);
tileSizeValue = new JTextField();
int fromConfig = parent.getConfiguration().getTileSize();
@@ -296,31 +277,32 @@ public class Settings implements Activity {
}
}
tileSizeValue.setText(Integer.toString(fromConfig));
constraints.gridx = 2;
constraints.gridy = currentRow;
parent.getContentPane().add(tileSizeValue, constraints);
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
hideCustomTileSize(config.getTileSize() != -1, false);
saveFile = new JCheckBox("Save settings", true);
constraints.gridwidth = columns - 3;
constraints.gridx = 2;
constraints.gridy = currentRow;
parent.getContentPane().add(saveFile, constraints);
advanced_panel.add(tileSizeLabel);
advanced_panel.add(tileSizeValue);
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
currentRow++;
constraints.gridx = 0;
constraints.gridy = currentRow;
constraints.gridwidth = 2;
parent.getContentPane().add(advanced_panel, constraints);
// general settings
JPanel general_panel = new JPanel(new GridLayout(1, 2));
saveFile = new JCheckBox("Save settings", true);
general_panel.add(saveFile);
autoSignIn = new JCheckBox("Auto sign in", config.getAutoSignIn());
autoSignIn.addActionListener(new AutoSignInChangeAction());
constraints.gridy = currentRow;
parent.getContentPane().add(autoSignIn, constraints);
general_panel.add(autoSignIn);
parent.addPadding(1, ++currentRow, columns - 2, 1);
++currentRow;
currentRow++;
constraints.gridx = 0;
constraints.gridy = currentRow;
constraints.gridwidth = 2;
parent.getContentPane().add(general_panel, constraints);
String buttonText = "Start";
if (parent.getClient() != null) {
@@ -328,19 +310,15 @@ public class Settings implements Activity {
buttonText = "Save";
}
}
saveButton = new JButton(buttonText);
checkDisplaySaveButton();
saveButton.addActionListener(new SaveAction());
constraints.gridwidth = columns - 2;
constraints.gridx = 1;
currentRow++;
constraints.gridwidth = 2;
constraints.gridx = 0;
constraints.gridy = currentRow;
parent.getContentPane().add(saveButton, constraints);
parent.addPadding(1, ++currentRow, columns - 2, 1);
parent.addPadding(0, 0, 1, currentRow + 1);
parent.addPadding(columns - 1, 0, 1, currentRow + 1);
if (haveAutoStarted == false && config.getAutoSignIn() && checkDisplaySaveButton()) {
// auto start
haveAutoStarted = true;
@@ -349,7 +327,6 @@ public class Settings implements Activity {
}
public void hideCustomTileSize(boolean hidden, boolean displayWarning) {
tileSizePadding.setVisible(hidden);
tileSizeValue.setVisible(hidden);
tileSizeLabel.setVisible(hidden);
if (customTileSize.isSelected() == true && displayWarning) {

View File

@@ -16,24 +16,38 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package com.sheepit.client.standalone.swing.activity;
import java.awt.Component;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.DecimalFormat;
import java.util.Date;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Spring;
import javax.swing.SpringLayout;
import com.sheepit.client.Client;
import com.sheepit.client.Job;
import com.sheepit.client.RenderProcess;
import com.sheepit.client.Server;
import com.sheepit.client.Stats;
import com.sheepit.client.Utils;
import com.sheepit.client.os.OS;
import com.sheepit.client.standalone.GuiSwing;
import com.sheepit.client.standalone.GuiSwing.ActivityType;
@@ -48,139 +62,184 @@ public class Working implements Activity {
JLabel creditEarned;
JButton pauseButton;
JButton exitAfterFrame;
JLabel current_project_name_value;
JLabel current_project_duration_value;
JLabel currrent_project_progression_value;
JLabel user_info_points_total_value;
JLabel waiting_projects_value;
JLabel connected_machines_value;
JLabel user_info_total_rendertime_this_session_value;
public Working(GuiSwing parent_) {
parent = parent_;
statusContent = new JLabel("Init");
renderedFrameContent = new JLabel("0");
remainingFrameContent = new JLabel("0");
renderedFrameContent = new JLabel("");
remainingFrameContent = new JLabel("");
creditEarned = new JLabel("");
lastRender = new JLabel();
current_project_name_value = new JLabel("");
current_project_duration_value = new JLabel("");
currrent_project_progression_value = new JLabel("");
user_info_points_total_value = new JLabel("");
waiting_projects_value = new JLabel("");
connected_machines_value = new JLabel("");
user_info_total_rendertime_this_session_value = new JLabel("");
lastRender = new JLabel("");
}
@Override
public void show() {
GridBagConstraints constraints = new GridBagConstraints();
int currentRow = 0;
// current project
JPanel current_project_panel = new JPanel(new SpringLayout());
current_project_panel.setBorder(BorderFactory.createTitledBorder("Project"));
parent.addPadding(1, ++currentRow, 2, 1);
++currentRow;
JLabel current_project_status = new JLabel("Status : ", JLabel.TRAILING);
JLabel current_project_name = new JLabel("Name : ", JLabel.TRAILING);
JLabel current_project_duration = new JLabel("Rendering for : ", JLabel.TRAILING);
JLabel current_project_progression = new JLabel("Remaining : ", JLabel.TRAILING);
current_project_panel.add(current_project_status);
current_project_panel.add(statusContent);
current_project_panel.add(current_project_name);
current_project_panel.add(current_project_name_value);
current_project_panel.add(current_project_duration);
current_project_panel.add(current_project_duration_value);
current_project_panel.add(current_project_progression);
current_project_panel.add(currrent_project_progression_value);
// user info
JPanel session_info_panel = new JPanel(new SpringLayout());
session_info_panel.setBorder(BorderFactory.createTitledBorder("Session infos"));
JLabel user_info_credits_this_session = new JLabel("Points earned : ", JLabel.TRAILING);
JLabel user_info_total_rendertime_this_session = new JLabel("Duration : ", JLabel.TRAILING);
JLabel user_info_rendered_frame_this_session = new JLabel("Rendered frames : ", JLabel.TRAILING);
session_info_panel.add(user_info_credits_this_session);
session_info_panel.add(creditEarned);
session_info_panel.add(user_info_rendered_frame_this_session);
session_info_panel.add(renderedFrameContent);
session_info_panel.add(user_info_total_rendertime_this_session);
session_info_panel.add(user_info_total_rendertime_this_session_value);
// global stats
JPanel global_stats_panel = new JPanel(new SpringLayout());
global_stats_panel.setBorder(BorderFactory.createTitledBorder("Global stats"));
JLabel global_stats_machine_connected = new JLabel("Machine connected : ", JLabel.TRAILING);
JLabel global_stats_remaining_frame = new JLabel("Remaining frames : ", JLabel.TRAILING);
JLabel global_stats_waiting_project = new JLabel("Waiting project : ", JLabel.TRAILING);
JLabel global_stats_user_points = new JLabel("User points : ", JLabel.TRAILING);
global_stats_panel.add(global_stats_waiting_project);
global_stats_panel.add(waiting_projects_value);
global_stats_panel.add(global_stats_machine_connected);
global_stats_panel.add(connected_machines_value);
global_stats_panel.add(global_stats_remaining_frame);
global_stats_panel.add(remainingFrameContent);
global_stats_panel.add(global_stats_user_points);
global_stats_panel.add(user_info_points_total_value);
// last frame
JPanel last_frame_panel = new JPanel();
last_frame_panel.setBorder(BorderFactory.createTitledBorder("Last rendered frame"));
lastRender.setIcon(new ImageIcon(new BufferedImage(200, 120, BufferedImage.TYPE_INT_ARGB)));
last_frame_panel.add(lastRender);
ImageIcon image = new ImageIcon(getClass().getResource("/title.png"));
JLabel labelImage = new JLabel(image);
constraints.fill = GridBagConstraints.BOTH;
constraints.weightx = 1.0;
constraints.weighty = 3.0;
constraints.gridwidth = 2;
constraints.gridx = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(labelImage, constraints);
labelImage.setAlignmentX(Component.CENTER_ALIGNMENT);
parent.getContentPane().add(labelImage);
parent.addPadding(1, ++currentRow, 2, 1);
++currentRow;
JLabel statusLabel = new JLabel("Status:");
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.weighty = 0.0;
constraints.gridwidth = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(statusLabel, constraints);
statusContent.setVerticalAlignment(JLabel.TOP);
statusContent.setVerticalTextPosition(JLabel.TOP);
constraints.gridx = 2;
parent.getContentPane().add(statusContent, constraints);
parent.addPadding(1, ++currentRow, 2, 1);
++currentRow;
JLabel creditsEarnedLabel = new JLabel("Credits earned:");
constraints.gridx = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(creditsEarnedLabel, constraints);
constraints.gridx = 2;
parent.getContentPane().add(creditEarned, constraints);
parent.addPadding(1, ++currentRow, 2, 1);
++currentRow;
JLabel renderedFrameLabel = new JLabel("Rendered frames:");
constraints.gridx = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(renderedFrameLabel, constraints);
constraints.gridx = 2;
parent.getContentPane().add(renderedFrameContent, constraints);
parent.addPadding(1, ++currentRow, 2, 1);
++currentRow;
JLabel remainingFrameLabel = new JLabel("Remaining frames:");
constraints.gridx = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(remainingFrameLabel, constraints);
constraints.gridx = 2;
parent.getContentPane().add(remainingFrameContent, constraints);
parent.addPadding(1, ++currentRow, 2, 1);
++currentRow;
JLabel lastRenderedFrameLabel = new JLabel("Last rendered frame:");
constraints.gridx = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(lastRenderedFrameLabel, constraints);
constraints.gridx = 2;
parent.getContentPane().add(lastRender, constraints);
parent.addPadding(1, ++currentRow, 2, 1);
++currentRow;
JPanel buttonsPanel = new JPanel(new GridLayout(2, 2));
JButton settingsButton = new JButton("Settings");
settingsButton.addActionListener(new SettingsAction());
constraints.gridx = 1;
constraints.gridy = currentRow;
parent.getContentPane().add(settingsButton, constraints);
pauseButton = new JButton("Pause");
pauseButton.addActionListener(new PauseAction());
constraints.gridx = 2;
constraints.gridy = currentRow;
parent.getContentPane().add(pauseButton, constraints);
++currentRow;
JButton blockJob = new JButton("Block this project");
constraints.gridx = 1;
constraints.gridy = currentRow;
blockJob.addActionListener(new blockJobAction());
parent.getContentPane().add(blockJob, constraints);
exitAfterFrame = new JButton("Exit after this frame");
constraints.gridx = 2;
constraints.gridy = currentRow;
exitAfterFrame.addActionListener(new ExitAfterAction());
parent.getContentPane().add(exitAfterFrame, constraints);
parent.addPadding(1, ++currentRow, 2, 1);
parent.addPadding(0, 0, 1, currentRow + 1);
parent.addPadding(3, 0, 1, currentRow + 1);
buttonsPanel.add(settingsButton);
buttonsPanel.add(pauseButton);
buttonsPanel.add(blockJob);
buttonsPanel.add(exitAfterFrame);
parent.getContentPane().setLayout(new GridBagLayout());
GridBagConstraints global_constraints = new GridBagConstraints();
global_constraints.fill = GridBagConstraints.HORIZONTAL;
global_constraints.weightx = 1;
global_constraints.gridx = 0;
parent.getContentPane().add(current_project_panel, global_constraints);
parent.getContentPane().add(global_stats_panel, global_constraints);
parent.getContentPane().add(session_info_panel, global_constraints);
parent.getContentPane().add(last_frame_panel, global_constraints);
parent.getContentPane().add(buttonsPanel, global_constraints);
Spring widthLeftColumn = getBestWidth(current_project_panel, 4, 2);
widthLeftColumn = Spring.max(widthLeftColumn, getBestWidth(global_stats_panel, 4, 2));
widthLeftColumn = Spring.max(widthLeftColumn, getBestWidth(session_info_panel, 3, 2));
alignPanel(current_project_panel, 4, 2, widthLeftColumn);
alignPanel(global_stats_panel, 4, 2, widthLeftColumn);
alignPanel(session_info_panel, 3, 2, widthLeftColumn);
}
public void setStatus(String msg_) {
statusContent.setText("<html>" + msg_ + "</html>"); // html for the text wrapping
statusContent.setText("<html>" + msg_ + "</html>");
}
public void setRemainingFrame(int n) {
remainingFrameContent.setText(String.valueOf(n));
public void setRenderingProjectName(String msg_) {
current_project_name_value.setText("<html>" + (msg_.length() > 26 ? msg_.substring(0, 26) : msg_) + "</html>");
}
public void setRemainingTime(String time_) {
currrent_project_progression_value.setText("<html>" + time_ + "</html>");
}
public void setRenderingTime(String time_) {
current_project_duration_value.setText("<html>" + time_ + "</html>");
}
public void displayStats(Stats stats) {
DecimalFormat df = new DecimalFormat("##,##,##,##,##,##,##0");
remainingFrameContent.setText(df.format(stats.getRemainingFrame()));
creditEarned.setText(df.format(stats.getCreditsEarnedDuringSession()));
user_info_points_total_value.setText(df.format(stats.getCreditsEarned()));
waiting_projects_value.setText(df.format(stats.getWaitingProject()));
connected_machines_value.setText(df.format(stats.getConnectedMachine()));
updateTime();
}
public void updateTime() {
if (this.parent.getClient().getStartTime() != 0) {
user_info_total_rendertime_this_session_value.setText(Utils.humanDuration(new Date((new Date().getTime() - this.parent.getClient().getStartTime()))));
}
Job job = this.parent.getClient().getRenderingJob();
if (job != null && job.getProcessRender() != null && job.getProcessRender().getStartTime() > 0) {
current_project_duration_value.setText("<html>" + Utils.humanDuration(new Date((new Date().getTime() - job.getProcessRender().getStartTime()))) + "</html>");
}
else {
current_project_duration_value.setText("");
}
}
public void setRenderedFrame(int n) {
renderedFrameContent.setText(String.valueOf(n));
showCreditEarned();
showLastRender();
}
@@ -208,17 +267,62 @@ public class Working implements Activity {
}
public void showCreditEarned() {
Client client = parent.getClient();
if (client != null) {
Server server = client.getServer();
if (server != null) {
String data = server.getCreditEarnedOnCurrentSession();
if (data != null) {
creditEarned.setText(data);
}
private void alignPanel(Container parent, int rows, int cols, Spring width) {
SpringLayout layout;
try {
layout = (SpringLayout) parent.getLayout();
}
catch (ClassCastException exc) {
System.err.println("The first argument to makeCompactGrid must use SpringLayout.");
return;
}
Spring x = Spring.constant(0);
for (int c = 0; c < cols; c++) {
for (int r = 0; r < rows; r++) {
SpringLayout.Constraints constraints = getConstraintsForCell(r, c, parent, cols);
constraints.setX(x);
constraints.setWidth(width);
}
x = Spring.sum(x, width);
}
Spring y = Spring.constant(0);
for (int r = 0; r < rows; r++) {
Spring height = Spring.constant(0);
for (int c = 0; c < cols; c++) {
height = Spring.max(height, getConstraintsForCell(r, c, parent, cols).getHeight());
}
for (int c = 0; c < cols; c++) {
SpringLayout.Constraints constraints = getConstraintsForCell(r, c, parent, cols);
constraints.setY(y);
constraints.setHeight(height);
}
y = Spring.sum(y, height);
}
SpringLayout.Constraints pCons = layout.getConstraints(parent);
pCons.setConstraint(SpringLayout.SOUTH, y);
pCons.setConstraint(SpringLayout.EAST, x);
}
private Spring getBestWidth(Container parent, int rows, int cols) {
Spring x = Spring.constant(0);
Spring width = Spring.constant(0);
for (int c = 0; c < cols; c++) {
for (int r = 0; r < rows; r++) {
width = Spring.max(width, getConstraintsForCell(r, c, parent, cols).getWidth());
}
}
return width;
}
private SpringLayout.Constraints getConstraintsForCell(int row, int col, Container parent, int cols) {
SpringLayout layout = (SpringLayout) parent.getLayout();
Component c = parent.getComponent(row * cols + col);
return layout.getConstraints(c);
}
class PauseAction implements ActionListener {