Search in sources :

Example 1 with LanguageItem

use of net.technicpack.ui.listitems.LanguageItem in project LauncherV3 by TechnicPack.

the class OptionsDialog method initControlValues.

private void initControlValues() {
    javaArgs.getDocument().removeDocumentListener(javaArgsListener);
    javaArgs.setText(settings.getJavaArgs());
    javaArgs.getDocument().addDocumentListener(javaArgsListener);
    installField.setText(settings.getTechnicRoot().getAbsolutePath());
    clientId.setText(settings.getClientId());
    for (ActionListener listener : showConsole.getActionListeners()) showConsole.removeActionListener(listener);
    showConsole.setSelected(settings.getShowConsole());
    showConsole.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            changeShowConsole();
        }
    });
    for (ActionListener listener : askFirstBox.getActionListeners()) askFirstBox.removeActionListener(listener);
    askFirstBox.setSelected(!settings.shouldAutoAcceptModpackRequirements());
    askFirstBox.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            changeAskFirst();
        }
    });
    for (ActionListener listener : launchToModpacks.getActionListeners()) launchToModpacks.removeActionListener(listener);
    launchToModpacks.setSelected(settings.getLaunchToModpacks());
    launchToModpacks.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            changeLaunchToModpacks();
        }
    });
    for (ActionListener listener : versionSelect.getActionListeners()) versionSelect.removeActionListener(listener);
    versionSelect.removeAllItems();
    versionSelect.addItem(new DefaultVersionItem(javaVersions.getVersion(null, true), resources));
    IJavaVersion best64Bit = javaVersions.getBest64BitVersion();
    if (best64Bit != null)
        versionSelect.addItem(new Best64BitVersionItem(javaVersions.getVersion("64bit", true), resources));
    for (IJavaVersion version : javaVersions.getVersions()) {
        versionSelect.addItem(new JavaVersionItem(version, resources));
    }
    String settingsVersion = settings.getJavaVersion();
    boolean settingsBitness = settings.getJavaBitness();
    if (settingsVersion == null || settingsVersion.isEmpty() || settingsVersion.equals("default"))
        versionSelect.setSelectedIndex(0);
    else if (settingsVersion.equals("64bit"))
        versionSelect.setSelectedIndex(1);
    else {
        for (int i = 2; i < versionSelect.getItemCount(); i++) {
            if (((JavaVersionItem) versionSelect.getItemAt(i)).getVersionNumber().equals(settingsVersion) && ((JavaVersionItem) versionSelect.getItemAt(i)).is64Bit() == settingsBitness) {
                versionSelect.setSelectedIndex(i);
                break;
            }
        }
    }
    versionSelect.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            changeJavaVersion();
        }
    });
    rebuildMemoryList();
    for (ActionListener listener : streamSelect.getActionListeners()) {
        streamSelect.removeActionListener(listener);
    }
    streamSelect.removeAllItems();
    streamSelect.addItem(new StreamItem(resources.getString("launcheroptions.build.stable"), "stable"));
    streamSelect.addItem(new StreamItem(resources.getString("launcheroptions.build.beta"), "beta"));
    streamSelect.setSelectedIndex((settings.getBuildStream().equals("beta")) ? 1 : 0);
    streamSelect.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            changeStream();
        }
    });
    for (ActionListener listener : launchSelect.getActionListeners()) launchSelect.removeActionListener(listener);
    launchSelect.removeAllItems();
    launchSelect.addItem(new OnLaunchItem(resources.getString("launcheroptions.packlaunch.hide"), LaunchAction.HIDE));
    launchSelect.addItem(new OnLaunchItem(resources.getString("launcheroptions.packlaunch.close"), LaunchAction.CLOSE));
    launchSelect.addItem(new OnLaunchItem(resources.getString("launcheroptions.packlaunch.nothing"), LaunchAction.NOTHING));
    switch(settings.getLaunchAction()) {
        case HIDE:
            launchSelect.setSelectedIndex(0);
            break;
        case CLOSE:
            launchSelect.setSelectedIndex(1);
            break;
        case NOTHING:
            launchSelect.setSelectedIndex(2);
            break;
        default:
            launchSelect.setSelectedIndex(0);
    }
    launchSelect.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            changeLaunchAction();
        }
    });
    for (ActionListener listener : langSelect.getActionListeners()) langSelect.removeActionListener(listener);
    langSelect.removeAllItems();
    String defaultLocaleText = resources.getString("launcheroptions.language.default");
    if (!resources.isDefaultLocaleSupported()) {
        defaultLocaleText = defaultLocaleText.concat(" (" + resources.getString("launcheroptions.language.unavailable") + ")");
    }
    langSelect.setRenderer(new LanguageCellRenderer(resources, null, langSelect.getBackground(), langSelect.getForeground()));
    langSelect.addItem(new LanguageItem(ResourceLoader.DEFAULT_LOCALE, defaultLocaleText, resources));
    for (int i = 0; i < LauncherMain.supportedLanguages.length; i++) {
        langSelect.addItem(new LanguageItem(resources.getCodeFromLocale(LauncherMain.supportedLanguages[i]), LauncherMain.supportedLanguages[i].getDisplayName(LauncherMain.supportedLanguages[i]), resources.getVariant(LauncherMain.supportedLanguages[i])));
    }
    if (!settings.getLanguageCode().equalsIgnoreCase(ResourceLoader.DEFAULT_LOCALE)) {
        Locale loc = resources.getLocaleFromCode(settings.getLanguageCode());
        for (int i = 0; i < LauncherMain.supportedLanguages.length; i++) {
            if (loc.equals(LauncherMain.supportedLanguages[i])) {
                langSelect.setSelectedIndex(i + 1);
                break;
            }
        }
    }
    langSelect.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            changeLanguage();
        }
    });
    widthInput.getDocument().removeDocumentListener(dimensionListener);
    heightInput.getDocument().removeDocumentListener(dimensionListener);
    int width = settings.getCustomWidth();
    int height = settings.getCustomHeight();
    width = (width < 1) ? 800 : width;
    height = (height < 1) ? 600 : height;
    widthInput.setText(Integer.toString(width));
    heightInput.setText(Integer.toString(height));
    widthInput.getDocument().addDocumentListener(dimensionListener);
    heightInput.getDocument().addDocumentListener(dimensionListener);
    for (ActionListener listener : windowSelect.getActionListeners()) {
        windowSelect.removeActionListener(listener);
    }
    windowSelect.removeAllItems();
    windowSelect.addItem(resources.getString("launcheroptions.video.windowSize.default"));
    windowSelect.addItem(resources.getString("launcheroptions.video.windowSize.fullscreen"));
    windowSelect.addItem(resources.getString("launcheroptions.video.windowSize.custom"));
    switch(settings.getLaunchWindowType()) {
        case DEFAULT:
            windowSelect.setSelectedIndex(0);
            break;
        case FULLSCREEN:
            windowSelect.setSelectedIndex(1);
            break;
        case CUSTOM:
            windowSelect.setSelectedIndex(2);
            break;
    }
    windowSelect.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            changeWindowType();
        }
    });
    updateDimensionsEnabled();
    for (ActionListener listener : useStencil.getActionListeners()) {
        useStencil.removeActionListener(listener);
    }
    useStencil.removeAllItems();
    useStencil.addItem(resources.getString("launcheroptions.video.stencil.enabled"));
    useStencil.addItem(resources.getString("launcheroptions.video.stencil.disabled"));
    if (settings.shouldUseStencilBuffer())
        useStencil.setSelectedIndex(0);
    else
        useStencil.setSelectedIndex(1);
    useStencil.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            changeEnableStencil();
        }
    });
}
Also used : Locale(java.util.Locale) StreamItem(net.technicpack.launcher.ui.listitems.StreamItem) ActionEvent(java.awt.event.ActionEvent) DefaultVersionItem(net.technicpack.ui.listitems.javaversion.DefaultVersionItem) Best64BitVersionItem(net.technicpack.ui.listitems.javaversion.Best64BitVersionItem) JavaVersionItem(net.technicpack.ui.listitems.javaversion.JavaVersionItem) IJavaVersion(net.technicpack.launchercore.launch.java.IJavaVersion) OnLaunchItem(net.technicpack.launcher.ui.listitems.OnLaunchItem) LanguageCellRenderer(net.technicpack.ui.controls.lang.LanguageCellRenderer) ActionListener(java.awt.event.ActionListener) LanguageItem(net.technicpack.ui.listitems.LanguageItem)

Example 2 with LanguageItem

use of net.technicpack.ui.listitems.LanguageItem in project LauncherV3 by TechnicPack.

the class InstallerFrame method portableInstall.

protected void portableInstall() {
    String targetPath = null;
    final Relauncher relauncher = new TechnicRelauncher(null, settings.getBuildStream(), 0, new TechnicLauncherDirectories(settings.getTechnicRoot()), resources, params);
    try {
        String currentPath = relauncher.getRunningPath();
        String launcher = (currentPath.endsWith(".exe")) ? "TechnicLauncher.exe" : "TechnicLauncher.jar";
        targetPath = new File(portableInstallDir.getText(), launcher).getAbsolutePath();
        File targetExe = new File(portableInstallDir.getText(), launcher);
        if (!(new File(currentPath).equals(targetExe))) {
            if (targetExe.exists() && !targetExe.delete()) {
                JOptionPane.showMessageDialog(this, resources.getString("installer.portable.replacefailed"), resources.getString("installer.portable.replacefailtitle"), JOptionPane.ERROR_MESSAGE);
                return;
            }
            MoveLauncherPackage moveTask = new MoveLauncherPackage("", targetExe, relauncher);
            moveTask.runTask(null);
        }
    } catch (UnsupportedEncodingException ex) {
        ex.printStackTrace();
        return;
    } catch (IOException ex) {
        ex.printStackTrace();
        return;
    } catch (InterruptedException ex) {
        ex.printStackTrace();
        return;
    }
    glassPane.setVisible(true);
    final String threadTargetPath = targetPath;
    Thread thread = new Thread(new Runnable() {

        @Override
        public void run() {
            File oldRoot = settings.getTechnicRoot();
            File newRoot = new File(portableInstallDir.getText(), "technic");
            File oldSettingsFile = settings.getFilePath();
            File newSettingsFile = new File(newRoot, "settings.json");
            if (oldSettingsFile.exists() && !oldSettingsFile.getAbsolutePath().equals(newSettingsFile.getAbsolutePath()))
                oldSettingsFile.delete();
            boolean rootHasChanged = false;
            if (oldRoot.exists() && !oldRoot.getAbsolutePath().equals(newRoot.getAbsolutePath())) {
                rootHasChanged = true;
                try {
                    if (!newRoot.exists())
                        newRoot.mkdirs();
                    FileUtils.copyDirectory(oldRoot, newRoot);
                    FileUtils.deleteDirectory(oldRoot);
                } catch (IOException ex) {
                    Utils.getLogger().log(Level.SEVERE, "Copying install to new directory failed: ", ex);
                }
            }
            settings.setPortable();
            settings.setFilePath(newSettingsFile);
            settings.getTechnicRoot();
            settings.setLanguageCode(((LanguageItem) portableLanguages.getSelectedItem()).getLangCode());
            settings.save();
            VersionFileBuildNumber buildNumber = new VersionFileBuildNumber(resources);
            Utils.sendTracking("installLauncher", "portable", buildNumber.getBuildNumber(), settings.getClientId());
            relauncher.launch(threadTargetPath, params.getArgs());
            System.exit(0);
        }
    });
    thread.start();
}
Also used : VersionFileBuildNumber(net.technicpack.launcher.autoupdate.VersionFileBuildNumber) UnsupportedEncodingException(java.io.UnsupportedEncodingException) IOException(java.io.IOException) MoveLauncherPackage(net.technicpack.autoupdate.tasks.MoveLauncherPackage) TechnicRelauncher(net.technicpack.launcher.autoupdate.TechnicRelauncher) Relauncher(net.technicpack.autoupdate.Relauncher) TechnicLauncherDirectories(net.technicpack.launcher.io.TechnicLauncherDirectories) TechnicRelauncher(net.technicpack.launcher.autoupdate.TechnicRelauncher) LanguageItem(net.technicpack.ui.listitems.LanguageItem) File(java.io.File)

Example 3 with LanguageItem

use of net.technicpack.ui.listitems.LanguageItem in project LauncherV3 by TechnicPack.

the class InstallerFrame method standardInstall.

protected void standardInstall() {
    glassPane.setVisible(true);
    Thread thread = new Thread(new Runnable() {

        @Override
        public void run() {
            File oldSettings = settings.getFilePath();
            File newSettings = new File(OperatingSystem.getOperatingSystem().getUserDirectoryForApp("technic"), "settings.json");
            if (oldSettings.exists() && !oldSettings.getAbsolutePath().equals(newSettings.getAbsolutePath())) {
                oldSettings.delete();
            }
            File oldRoot = settings.getTechnicRoot();
            File newRoot = new File(standardInstallDir.getText());
            boolean rootHasChanged = false;
            if (oldRoot.exists() && !oldRoot.getAbsolutePath().equals(newRoot.getAbsolutePath())) {
                rootHasChanged = true;
                try {
                    if (!newRoot.exists())
                        newRoot.mkdirs();
                    FileUtils.copyDirectory(oldRoot, newRoot);
                    FileUtils.deleteDirectory(oldRoot);
                } catch (IOException ex) {
                    Utils.getLogger().log(Level.SEVERE, "Copying install to new directory failed: ", ex);
                }
            }
            settings.setFilePath(newSettings);
            if (settings.isPortable() || rootHasChanged || !standardInstallDir.getText().equals(OperatingSystem.getOperatingSystem().getUserDirectoryForApp("technic").getAbsolutePath()))
                settings.installTo(standardInstallDir.getText());
            settings.getTechnicRoot();
            settings.setLanguageCode(((LanguageItem) standardLanguages.getSelectedItem()).getLangCode());
            settings.save();
            VersionFileBuildNumber buildNumber = new VersionFileBuildNumber(resources);
            Utils.sendTracking("installLauncher", "standard", buildNumber.getBuildNumber(), settings.getClientId());
            Relauncher relauncher = new TechnicRelauncher(null, settings.getBuildStream(), 0, new TechnicLauncherDirectories(settings.getTechnicRoot()), resources, params);
            try {
                String currentPath = relauncher.getRunningPath();
                relauncher.launch(currentPath, params.getArgs());
                System.exit(0);
                return;
            } catch (UnsupportedEncodingException ex) {
                ex.printStackTrace();
                return;
            }
        }
    });
    thread.start();
}
Also used : VersionFileBuildNumber(net.technicpack.launcher.autoupdate.VersionFileBuildNumber) TechnicRelauncher(net.technicpack.launcher.autoupdate.TechnicRelauncher) Relauncher(net.technicpack.autoupdate.Relauncher) TechnicLauncherDirectories(net.technicpack.launcher.io.TechnicLauncherDirectories) TechnicRelauncher(net.technicpack.launcher.autoupdate.TechnicRelauncher) UnsupportedEncodingException(java.io.UnsupportedEncodingException) IOException(java.io.IOException) LanguageItem(net.technicpack.ui.listitems.LanguageItem) File(java.io.File)

Example 4 with LanguageItem

use of net.technicpack.ui.listitems.LanguageItem in project LauncherV3 by TechnicPack.

the class LoginFrame method initComponents.

/**
 * Generate & setup UI components for the frame
 */
private void initComponents() {
    setLayout(new GridBagLayout());
    // Close button
    JButton closeButton = new JButton();
    closeButton.setContentAreaFilled(false);
    closeButton.setBorder(BorderFactory.createEmptyBorder());
    closeButton.setIcon(resources.getIcon("close.png"));
    closeButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    closeButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            closeButtonClicked();
        }
    });
    closeButton.setFocusable(false);
    add(closeButton, new GridBagConstraints(2, 0, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(7, 0, 0, 7), 0, 0));
    // Logo at the top
    JLabel platformImage = new JLabel();
    platformImage.setIcon(resources.getIcon("platform_logo.png"));
    add(platformImage, new GridBagConstraints(0, 0, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(30, 0, 0, 0), 0, 0));
    JLabel instructionText = new JLabel("<html><body align=\"center\">" + resources.getString("login.instructions") + "</body></html>", JLabel.CENTER);
    instructionText.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    instructionText.setForeground(LauncherFrame.COLOR_WHITE_TEXT);
    add(instructionText, new GridBagConstraints(0, 1, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(9, 3, 0, 3), 0, 0));
    JLabel userLabel = new JLabel(resources.getString("login.username"));
    userLabel.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    userLabel.setForeground(LauncherFrame.COLOR_WHITE_TEXT);
    add(userLabel, new GridBagConstraints(0, 2, 3, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(10, 20, 0, 20), 0, 0));
    // Setup username box
    nameSelect = new JComboBox();
    if (System.getProperty("os.name").toLowerCase(Locale.ENGLISH).contains("mac")) {
        nameSelect.setUI(new MetalComboBoxUI());
    }
    nameSelect.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    nameSelect.setEditable(true);
    nameSelect.setBorder(new RoundBorder(LauncherFrame.COLOR_BUTTON_BLUE, 1, 10));
    nameSelect.setForeground(LauncherFrame.COLOR_BUTTON_BLUE);
    nameSelect.setBackground(LauncherFrame.COLOR_FORMELEMENT_INTERNAL);
    nameSelect.setVisible(false);
    UserCellRenderer userRenderer = new UserCellRenderer(resources, this.skinRepository);
    userRenderer.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    userRenderer.setSelectedBackgroundColor(LauncherFrame.COLOR_FORMELEMENT_INTERNAL);
    userRenderer.setSelectedForegroundColor(LauncherFrame.COLOR_BUTTON_BLUE);
    userRenderer.setUnselectedBackgroundColor(LauncherFrame.COLOR_CENTRAL_BACK_OPAQUE);
    userRenderer.setUnselectedForegroundColor(LauncherFrame.COLOR_BUTTON_BLUE);
    nameSelect.setRenderer(userRenderer);
    UserCellEditor userEditor = new UserCellEditor(resources.getFont(ResourceLoader.FONT_OPENSANS, 16), this.skinRepository, LauncherFrame.COLOR_BUTTON_BLUE);
    nameSelect.setEditor(userEditor);
    userEditor.addKeyListener(this);
    nameSelect.setUI(new SimpleButtonComboUI(new RoundedBorderFormatter(new RoundBorder(LauncherFrame.COLOR_BUTTON_BLUE, 1, 0)), resources, LauncherFrame.COLOR_SCROLL_TRACK, LauncherFrame.COLOR_SCROLL_THUMB));
    nameSelect.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            changeUser();
        }
    });
    add(nameSelect, new GridBagConstraints(0, 3, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(3, 20, 0, 20), 4, 4));
    name = new JTextField();
    name.setBorder(new RoundBorder(LauncherFrame.COLOR_BUTTON_BLUE, 1, 10));
    name.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    name.setBackground(LauncherFrame.COLOR_FORMELEMENT_INTERNAL);
    name.setForeground(LauncherFrame.COLOR_BUTTON_BLUE);
    name.setCaretColor(LauncherFrame.COLOR_BUTTON_BLUE);
    name.addKeyListener(this);
    add(name, new GridBagConstraints(0, 3, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(3, 20, 0, 20), 4, 17));
    JLabel passLabel = new JLabel(resources.getString("login.password"));
    passLabel.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    passLabel.setForeground(LauncherFrame.COLOR_WHITE_TEXT);
    add(passLabel, new GridBagConstraints(0, 4, 3, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(12, 20, 0, 20), 0, 0));
    // Setup password box
    password = new JPasswordField();
    password.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    password.setBorder(new RoundBorder(LauncherFrame.COLOR_BUTTON_BLUE, 1, 10));
    password.setForeground(LauncherFrame.COLOR_BUTTON_BLUE);
    password.setBackground(LauncherFrame.COLOR_FORMELEMENT_INTERNAL);
    password.addKeyListener(this);
    password.setEchoChar('*');
    password.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            attemptLogin();
        }
    });
    password.setCaretColor(LauncherFrame.COLOR_BUTTON_BLUE);
    add(password, new GridBagConstraints(0, 5, 3, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(3, 20, 0, 20), 4, 17));
    // "Remember this account"
    Font rememberFont = resources.getFont(ResourceLoader.FONT_OPENSANS, 14);
    rememberAccount = new JCheckBox("<html><body style=\"color:#D0D0D0\">" + resources.getString("login.remember") + "</body></html>", false);
    rememberAccount.setFont(rememberFont);
    rememberAccount.setForeground(LauncherFrame.COLOR_WHITE_TEXT);
    rememberAccount.setOpaque(false);
    rememberAccount.setHorizontalTextPosition(SwingConstants.LEFT);
    rememberAccount.setHorizontalAlignment(SwingConstants.RIGHT);
    rememberAccount.setBorder(BorderFactory.createEmptyBorder());
    rememberAccount.setIconTextGap(6);
    rememberAccount.addKeyListener(this);
    rememberAccount.setSelectedIcon(resources.getIcon("checkbox_closed.png"));
    rememberAccount.setIcon(resources.getIcon("checkbox_open.png"));
    rememberAccount.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            toggleRemember();
        }
    });
    rememberAccount.setFocusPainted(false);
    add(rememberAccount, new GridBagConstraints(1, 6, 2, 1, 1.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.BOTH, new Insets(24, 20, 0, 20), 0, 0));
    // Login button
    RoundedButton button = new RoundedButton(resources.getString("login.button"));
    button.setBorder(BorderFactory.createEmptyBorder(5, 17, 10, 17));
    button.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    button.setContentAreaFilled(false);
    button.setForeground(LauncherFrame.COLOR_BUTTON_BLUE);
    button.setHoverForeground(LauncherFrame.COLOR_BLUE);
    button.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            attemptLogin();
        }
    });
    add(button, new GridBagConstraints(0, 6, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(24, 20, 0, 0), 0, 0));
    add(Box.createVerticalGlue(), new GridBagConstraints(0, 8, 3, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
    JPanel linkPane = new JPanel();
    linkPane.setBackground(LauncherFrame.COLOR_SELECTOR_BACK);
    linkPane.setBorder(BorderFactory.createEmptyBorder(7, 0, 7, 0));
    linkPane.setLayout(new BoxLayout(linkPane, BoxLayout.LINE_AXIS));
    linkPane.add(Box.createHorizontalStrut(8));
    languages = new JComboBox();
    String defaultLocaleText = resources.getString("launcheroptions.language.default");
    if (!resources.isDefaultLocaleSupported()) {
        defaultLocaleText = defaultLocaleText.concat(" (" + resources.getString("launcheroptions.language.unavailable") + ")");
    }
    languages.addItem(new LanguageItem(ResourceLoader.DEFAULT_LOCALE, defaultLocaleText, resources));
    for (int i = 0; i < LauncherMain.supportedLanguages.length; i++) {
        languages.addItem(new LanguageItem(resources.getCodeFromLocale(LauncherMain.supportedLanguages[i]), LauncherMain.supportedLanguages[i].getDisplayName(LauncherMain.supportedLanguages[i]), resources.getVariant(LauncherMain.supportedLanguages[i])));
    }
    if (!settings.getLanguageCode().equalsIgnoreCase(ResourceLoader.DEFAULT_LOCALE)) {
        Locale loc = resources.getLocaleFromCode(settings.getLanguageCode());
        for (int i = 0; i < LauncherMain.supportedLanguages.length; i++) {
            if (loc.equals(LauncherMain.supportedLanguages[i])) {
                languages.setSelectedIndex(i + 1);
                break;
            }
        }
    }
    languages.setBorder(BorderFactory.createEmptyBorder());
    languages.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 14));
    languages.setUI(new LanguageCellUI(resources, new RoundedBorderFormatter(new LineBorder(Color.black, 1)), LauncherFrame.COLOR_SCROLL_TRACK, LauncherFrame.COLOR_SCROLL_THUMB));
    languages.setForeground(LauncherFrame.COLOR_WHITE_TEXT);
    languages.setBackground(LauncherFrame.COLOR_SELECTOR_BACK);
    languages.setRenderer(new LanguageCellRenderer(resources, "globe.png", LauncherFrame.COLOR_SELECTOR_BACK, LauncherFrame.COLOR_WHITE_TEXT));
    languages.setEditable(false);
    languages.setFocusable(false);
    languages.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            languageChanged();
        }
    });
    linkPane.add(languages);
    linkPane.add(Box.createHorizontalGlue());
    JButton termsLink = new JButton(resources.getString("login.terms"));
    termsLink.setContentAreaFilled(false);
    termsLink.setBorder(BorderFactory.createEmptyBorder());
    termsLink.setForeground(LauncherFrame.COLOR_WHITE_TEXT);
    termsLink.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 14));
    termsLink.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    termsLink.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            visitTerms();
        }
    });
    linkPane.add(termsLink);
    linkPane.add(Box.createHorizontalStrut(8));
    add(linkPane, new GridBagConstraints(0, 9, 3, 1, 1.0, 0.0, GridBagConstraints.SOUTH, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0));
}
Also used : Locale(java.util.Locale) RoundedButton(net.technicpack.ui.controls.RoundedButton) ActionEvent(java.awt.event.ActionEvent) LineBorder(javax.swing.border.LineBorder) LanguageCellRenderer(net.technicpack.ui.controls.lang.LanguageCellRenderer) RoundedBorderFormatter(net.technicpack.ui.controls.list.popupformatters.RoundedBorderFormatter) LanguageCellUI(net.technicpack.ui.controls.lang.LanguageCellUI) MetalComboBoxUI(javax.swing.plaf.metal.MetalComboBoxUI) SimpleButtonComboUI(net.technicpack.ui.controls.list.SimpleButtonComboUI) ActionListener(java.awt.event.ActionListener) RoundBorder(net.technicpack.ui.controls.borders.RoundBorder) LanguageItem(net.technicpack.ui.listitems.LanguageItem)

Example 5 with LanguageItem

use of net.technicpack.ui.listitems.LanguageItem in project LauncherV3 by TechnicPack.

the class InstallerFrame method setupPortableMode.

private void setupPortableMode(JPanel panel) {
    panel.setLayout(new GridBagLayout());
    JLabel portableSpiel = new JLabel("<html><body align=\"left\" style='margin-right:10px;'>" + resources.getString("launcher.installer.portablespiel") + "</body></html>");
    portableSpiel.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    portableSpiel.setForeground(LauncherFrame.COLOR_WHITE_TEXT);
    portableSpiel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    panel.add(portableSpiel, new GridBagConstraints(0, 0, 3, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(9, 8, 9, 3), 0, 0));
    panel.add(Box.createGlue(), new GridBagConstraints(0, 1, 3, 1, 1.0, 0.7, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
    JLabel installFolderLabel = new JLabel(resources.getString("launcher.installer.folder"));
    installFolderLabel.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    installFolderLabel.setForeground(LauncherFrame.COLOR_WHITE_TEXT);
    panel.add(installFolderLabel, new GridBagConstraints(0, 2, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 24, 0, 8), 0, 0));
    String installDir = "";
    if (settings.isPortable())
        installDir = settings.getTechnicRoot().getAbsolutePath();
    portableInstallDir = new JTextField(installDir);
    portableInstallDir.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    portableInstallDir.setForeground(LauncherFrame.COLOR_BLUE);
    portableInstallDir.setBackground(LauncherFrame.COLOR_FORMELEMENT_INTERNAL);
    portableInstallDir.setHighlighter(null);
    portableInstallDir.setEditable(false);
    portableInstallDir.setCursor(null);
    portableInstallDir.setBorder(new RoundBorder(LauncherFrame.COLOR_BUTTON_BLUE, 1, 8));
    panel.add(portableInstallDir, new GridBagConstraints(1, 2, 1, 1, 1, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 0, 5), 0, 16));
    RoundedButton selectInstall = new RoundedButton(resources.getString("launcher.installer.select"));
    selectInstall.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    selectInstall.setContentAreaFilled(false);
    selectInstall.setForeground(LauncherFrame.COLOR_BUTTON_BLUE);
    selectInstall.setHoverForeground(LauncherFrame.COLOR_BLUE);
    selectInstall.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            selectPortable();
        }
    });
    panel.add(selectInstall, new GridBagConstraints(2, 2, 1, 1, 0, 0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 5, 0, 16), 0, 0));
    panel.add(Box.createGlue(), new GridBagConstraints(0, 3, 3, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
    String defaultLocaleText = resources.getString("launcheroptions.language.default");
    if (!resources.isDefaultLocaleSupported()) {
        defaultLocaleText = defaultLocaleText.concat(" (" + resources.getString("launcheroptions.language.unavailable") + ")");
    }
    portableLanguages = new JComboBox();
    portableLanguages.addItem(new LanguageItem(ResourceLoader.DEFAULT_LOCALE, defaultLocaleText, resources));
    for (int i = 0; i < LauncherMain.supportedLanguages.length; i++) {
        portableLanguages.addItem(new LanguageItem(resources.getCodeFromLocale(LauncherMain.supportedLanguages[i]), LauncherMain.supportedLanguages[i].getDisplayName(LauncherMain.supportedLanguages[i]), resources.getVariant(LauncherMain.supportedLanguages[i])));
    }
    if (!settings.getLanguageCode().equalsIgnoreCase(ResourceLoader.DEFAULT_LOCALE)) {
        Locale loc = resources.getLocaleFromCode(settings.getLanguageCode());
        for (int i = 0; i < LauncherMain.supportedLanguages.length; i++) {
            if (loc.equals(LauncherMain.supportedLanguages[i])) {
                portableLanguages.setSelectedIndex(i + 1);
                break;
            }
        }
    }
    portableLanguages.setBorder(new RoundBorder(LauncherFrame.COLOR_SCROLL_THUMB, 1, 10));
    portableLanguages.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 14));
    portableLanguages.setUI(new LanguageCellUI(resources, new RoundedBorderFormatter(new LineBorder(Color.black, 1)), LauncherFrame.COLOR_SCROLL_TRACK, LauncherFrame.COLOR_SCROLL_THUMB));
    portableLanguages.setForeground(LauncherFrame.COLOR_WHITE_TEXT);
    portableLanguages.setBackground(LauncherFrame.COLOR_SELECTOR_BACK);
    portableLanguages.setRenderer(new LanguageCellRenderer(resources, "globe.png", LauncherFrame.COLOR_SELECTOR_BACK, LauncherFrame.COLOR_WHITE_TEXT));
    portableLanguages.setEditable(false);
    portableLanguages.setFocusable(false);
    portableLanguages.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            portableLanguageChanged();
        }
    });
    panel.add(portableLanguages, new GridBagConstraints(0, 4, 1, 0, 0, 0, GridBagConstraints.SOUTHWEST, GridBagConstraints.NONE, new Insets(0, 8, 8, 0), 0, 0));
    portableInstallButton = new RoundedButton(resources.getString("launcher.installer.install"));
    portableInstallButton.setFont(resources.getFont(ResourceLoader.FONT_OPENSANS, 16));
    portableInstallButton.setContentAreaFilled(false);
    portableInstallButton.setForeground(LauncherFrame.COLOR_GREY_TEXT);
    portableInstallButton.setHoverForeground(LauncherFrame.COLOR_BLUE);
    portableInstallButton.setBorder(BorderFactory.createEmptyBorder(5, 17, 10, 17));
    portableInstallButton.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            portableInstall();
        }
    });
    portableInstallButton.setEnabled(false);
    if (!installDir.equals("")) {
        portableInstallButton.setForeground(LauncherFrame.COLOR_BUTTON_BLUE);
        portableInstallButton.setEnabled(true);
    }
    panel.add(portableInstallButton, new GridBagConstraints(1, 4, 2, 1, 0, 0, GridBagConstraints.EAST, GridBagConstraints.VERTICAL, new Insets(0, 0, 8, 8), 0, 0));
}
Also used : Locale(java.util.Locale) RoundedButton(net.technicpack.ui.controls.RoundedButton) ActionEvent(java.awt.event.ActionEvent) LineBorder(javax.swing.border.LineBorder) LanguageCellRenderer(net.technicpack.ui.controls.lang.LanguageCellRenderer) ActionListener(java.awt.event.ActionListener) LanguageCellUI(net.technicpack.ui.controls.lang.LanguageCellUI) RoundedBorderFormatter(net.technicpack.ui.controls.list.popupformatters.RoundedBorderFormatter) RoundBorder(net.technicpack.ui.controls.borders.RoundBorder) LanguageItem(net.technicpack.ui.listitems.LanguageItem)

Aggregations

LanguageItem (net.technicpack.ui.listitems.LanguageItem)6 ActionEvent (java.awt.event.ActionEvent)4 ActionListener (java.awt.event.ActionListener)4 Locale (java.util.Locale)4 LanguageCellRenderer (net.technicpack.ui.controls.lang.LanguageCellRenderer)4 LineBorder (javax.swing.border.LineBorder)3 RoundedButton (net.technicpack.ui.controls.RoundedButton)3 RoundBorder (net.technicpack.ui.controls.borders.RoundBorder)3 LanguageCellUI (net.technicpack.ui.controls.lang.LanguageCellUI)3 RoundedBorderFormatter (net.technicpack.ui.controls.list.popupformatters.RoundedBorderFormatter)3 File (java.io.File)2 IOException (java.io.IOException)2 UnsupportedEncodingException (java.io.UnsupportedEncodingException)2 Relauncher (net.technicpack.autoupdate.Relauncher)2 TechnicRelauncher (net.technicpack.launcher.autoupdate.TechnicRelauncher)2 VersionFileBuildNumber (net.technicpack.launcher.autoupdate.VersionFileBuildNumber)2 TechnicLauncherDirectories (net.technicpack.launcher.io.TechnicLauncherDirectories)2 MetalComboBoxUI (javax.swing.plaf.metal.MetalComboBoxUI)1 MoveLauncherPackage (net.technicpack.autoupdate.tasks.MoveLauncherPackage)1 OnLaunchItem (net.technicpack.launcher.ui.listitems.OnLaunchItem)1