void updateUIText() {
        // borders
        br1.setTitle(UIText[0][curLang]);
        br2.setTitle(UIText[1][curLang]);
        br3.setTitle(UIText[2][curLang]);
        br4.setTitle(UIText[3][curLang]);

        // buttons
        addFileButton.setText(UIText[4][curLang]);
        changeFileButton.setText(UIText[5][curLang]);
        removeFileButton.setText(UIText[6][curLang]);
        more1Button.setText(UIText[7 + more1State][curLang]);
        more2Button.setText(UIText[7 + more2State][curLang]);
        setWorkDirButton.setText(UIText[9][curLang]);
        setMemoryButton.setText(UIText[10][curLang]);
        runButton.setText(UIText[11][curLang]);
        stopButton.setText(UIText[12][curLang]);

        // labels and checkboxes
        setLabelText(kmerLabel, kmerSize);
        setLabelText(maxBadFrequencyLabel, maxBadFrequency);
        setLabelText(minSeqLenLabel, minSequenceLength);
        setLabelText(minCompSizeLabel, minComponentSize);
        setLabelText(maxCompSizeLabel, maxComponentSize);
        setCheckBoxText(wrCheckBox, withoutRenumbering);

        setLabelText(workDirLabel, workDir);
        memoryLabel.setText(UIOptionsText[0][curLang]);
        setLabelText(avProcLabel, availableProcessors);
        eaCheckBox.setText(UIOptionsText[1][curLang]);
        setCheckBoxText(verboseCheckBox, verbose);
        ToolTipManager.sharedInstance().setInitialDelay(500);
        ToolTipManager.sharedInstance().setDismissDelay(Integer.MAX_VALUE);


        if (frame != null) {
            Dimension curSize = frame.getSize();
            Dimension prefSize = frame.getPreferredSize();
            Dimension size = new Dimension((int) Math.ceil(Math.max(prefSize.getWidth(), curSize.getWidth())),
                    (int) Math.ceil(Math.max(prefSize.getHeight(), curSize.getHeight())));
            
            if (lastSize != null && !newSize.equals(curSize)) {
                // user change the size, no need to restore last size
                lastSize = null;
            }

            if (!size.equals(curSize)) {
                // increasing size
                if (lastSize == null) {
                    lastSize = curSize;
                }
                newSize = size;
            } else {
                if (lastSize == null) {
                    // nothing to do
                } else {
                    if (lastSize.getHeight() >= prefSize.getHeight() && lastSize.getWidth() >= prefSize.getWidth()) {
                        size = lastSize;
                        lastSize = null;
                    } else {
                        size = new Dimension((int) Math.ceil(Math.max(prefSize.getWidth(), lastSize.getWidth())),
                                (int) Math.ceil(Math.max(prefSize.getHeight(), lastSize.getHeight())));
                        newSize = size;
                    }
                }
            }

            frame.setSize(size);
            frame.validate();
//            frame.repaint();
        }
        
        // status
        runningStageText.setText(UIStatusText[0][curLang]);
        elapsedTimeText.setText(UIStatusText[1][curLang]);
        remainingTimeText.setText(UIStatusText[2][curLang]);
        overallProgressText.setText(UIStatusText[3][curLang]);
        logText.setText(UIStatusText[4][curLang] + " (" + metafast.workDir.get() + File.separator + "log" + "):");
        updateStatusInfo();
    }