private JPanel createFeaturesPanel() { JPanel container = new JPanel(); SwingHelper.removeOpaqueness(container); container.setLayout(new MigLayout("fill, insets dialog")); JButton newButton = new JButton("New..."); JButton editButton = new JButton("Edit..."); JButton deleteButton = new JButton("Delete..."); container.add(newButton, "span, split 3, sizegroup bttn"); container.add(editButton, "sizegroup bttn"); container.add(deleteButton, "sizegroup bttn"); container.add(SwingHelper.wrapScrollPane(featuresTable), "grow, w 10:100:null, gaptop 10"); newButton.addActionListener( e -> { FeaturePattern pattern = new FeaturePattern(); if (FeaturePatternDialog.showEditor(BuilderConfigDialog.this, pattern)) { featuresModel.addFeature(pattern); } }); editButton.addActionListener( e -> { int index = featuresTable.getSelectedRow(); if (index > -1) { FeaturePattern pattern = featuresModel.getFeature(index); FeaturePatternDialog.showEditor(BuilderConfigDialog.this, pattern); featuresModel.fireTableDataChanged(); } else { SwingHelper.showErrorDialog( BuilderConfigDialog.this, "Select a feature first.", "No Selection"); } }); deleteButton.addActionListener( e -> { int index = featuresTable.getSelectedRow(); if (index > -1) { FeaturePattern pattern = featuresModel.getFeature(index); if (SwingHelper.confirmDialog( BuilderConfigDialog.this, "Are you sure that you want to delete '" + pattern.getFeature().getName() + "'?", "Delete")) { featuresModel.removeFeature(index); } } else { SwingHelper.showErrorDialog( BuilderConfigDialog.this, "Select a feature first.", "No Selection"); } }); return container; }
private void confirmHardUpdate(Instance instance) { if (!SwingHelper.confirmDialog(this, _("instance.confirmHardUpdate"), _("confirmTitle"))) { return; } // Execute the resetter HardResetter resetter = new HardResetter(instance); ObservableFuture<Instance> future = new ObservableFuture<Instance>( launcher.getExecutor().submit(resetter), resetter); // Show progress ProgressDialog.showProgress( this, future, _("instance.resettingTitle"), _("instance.resettingStatus", instance.getTitle())); SwingHelper.addErrorDialogCallback(this, future); // Update the list of instances after updating future.addListener(new Runnable() { @Override public void run() { launch(); instancesModel.update(); } }, SwingExecutor.INSTANCE); }
private void launch() { boolean offlineOnly = false; if(LauncherFrame.this.updateUrl != null) { SwingHelper.showMessageDialog( LauncherFrame.this, _("launcher.selfUpdateComplete"), _("errors.launchImpossible"), null, JOptionPane.ERROR_MESSAGE); return; } if(LauncherFrame.this.updateRequired) { offlineOnly = true; if(!SwingHelper.confirmDialog( LauncherFrame.this, _("errors.offlineOnly"), _("errors.genericError"))) return; } try { final Instance instance = launcher.getInstances().get(instancesTable.getSelectedRow()); // Store last access date Date now = new Date(); instance.setLastAccessed(now); Persistence.commitAndForget(instance); // Perform login final Session session = offlineOnly ? (new OfflineSession(launcher.getProperties().getProperty("offlinePlayerName"))) : LoginDialog.showLoginRequest(this, launcher); if (session == null) { return; } // Execute the updater Updater updater = new Updater(launcher, instance); updater.setSelectFeatures(configureFeaturesCheck.isSelected()); updater.setOnline(session.isOnline()); ObservableFuture<Instance> future = new ObservableFuture<Instance>( launcher.getExecutor().submit(updater), updater); // Show progress ProgressDialog.showProgress( this, future, _("launcher.updatingTitle"), _("launcher.updatingStatus", instance.getTitle())); SwingHelper.addErrorDialogCallback(this, future); // Update the list of instances after updating future.addListener(new Runnable() { @Override public void run() { instancesModel.update(); } }, SwingExecutor.INSTANCE); // On success, launch also Futures.addCallback(future, new FutureCallback<Instance>() { @Override public void onSuccess(Instance result) { launch(instance, session); } @Override public void onFailure(Throwable t) { } }, SwingExecutor.INSTANCE); } catch (ArrayIndexOutOfBoundsException e) { SwingHelper.showErrorDialog(this, _("launcher.noInstanceError"), _("launcher.noInstanceTitle")); } }