Exemplo n.º 1
0
  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;
  }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    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"));
        }
    }