gt: 		cmp = (JComponent) cmp.getComponent(0);
context: /*
   * PS3 Media Server, for streaming any medias to your PS3.
   * Copyright (C) 2008  A.Brochard
   *
   * This program is free software; you can redistribute it and/or
   * modify it under the terms of the GNU General Public License
   * as published by the Free Software Foundation; version 2
   * of the License only.
   *
   * This program is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
   *
   * You should have received a copy of the GNU General Public License
   * along with this program; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
   */
  package net.pms.newgui;
  
  import com.jgoodies.forms.builder.PanelBuilder;
  import com.jgoodies.forms.factories.Borders;
  import com.jgoodies.forms.layout.CellConstraints;
  import com.jgoodies.forms.layout.FormLayout;
  import com.sun.jna.Platform;
  import java.awt.*;
  import java.awt.event.*;
  import java.util.ArrayList;
  import java.util.Locale;
  import javax.swing.*;
  import javax.swing.event.TreeSelectionEvent;
  import javax.swing.event.TreeSelectionListener;
  import javax.swing.tree.DefaultMutableTreeNode;
  import javax.swing.tree.DefaultTreeModel;
  import javax.swing.tree.TreePath;
  import javax.swing.tree.TreeSelectionModel;
  import net.pms.Messages;
  import net.pms.PMS;
  import net.pms.configuration.PmsConfiguration;
  import net.pms.encoders.Player;
  import net.pms.encoders.PlayerFactory;
  import net.pms.newgui.components.CustomJButton;
  import net.pms.newgui.components.CustomJTextField;
  import net.pms.util.FormLayoutUtil;
  import net.pms.util.SubtitleUtils;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  
  public class TranscodingTab {
  	private static final Logger LOGGER = LoggerFactory.getLogger(TranscodingTab.class);
  	private static final String COMMON_COL_SPEC = "left:pref, 3dlu, pref:grow";
  	private static final String COMMON_ROW_SPEC = "4*(pref, 3dlu), pref, 9dlu, pref, 9dlu:grow, pref";
  	private static final String EMPTY_COL_SPEC = "left:pref, 3dlu, pref:grow";
  	private static final String EMPTY_ROW_SPEC = "p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p , 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 3dlu, p, 20dlu, p, 3dlu, p, 3dlu, p";
  	private static final String LEFT_COL_SPEC = "left:pref, pref, pref, pref, 0:grow";
  	private static final String LEFT_ROW_SPEC = "fill:10:grow, 3dlu, p, 3dlu, p, 3dlu, p";
  	private static final String MAIN_COL_SPEC = "left:pref, pref, 7dlu, pref, pref, fill:10:grow";
  	private static final String MAIN_ROW_SPEC = "fill:10:grow";
  
  	private final PmsConfiguration configuration;
  	private ComponentOrientation orientation;
  	private LooksFrame looksFrame;
  
  	TranscodingTab(PmsConfiguration configuration, LooksFrame looksFrame) {
  		this.configuration = configuration;
  		this.looksFrame = looksFrame;
  		// Apply the orientation for the locale
  		Locale locale = new Locale(configuration.getLanguage());
  		orientation = ComponentOrientation.getOrientation(locale);
  	}
  
  	private JCheckBox disableSubs;
  	private JTextField forcetranscode;
  	private JTextField notranscode;
  	private JTextField maxbuffer;
  	private JComboBox nbcores;
  	private DefaultMutableTreeNode parent[];
  	private JPanel tabbedPanel;
  	private CardLayout cl;
  	private JTextField abitrate;
  	private JTree tree;
  	private JCheckBox forcePCM;
  	private JCheckBox encodedAudioPassthrough;
  	public static JCheckBox forceDTSinPCM;
  	private JComboBox channels;
  	private JComboBox vq;
  	private JComboBox x264Quality;
  	private JCheckBox ac3remux;
  	private JCheckBox mpeg2remux;
  	private JCheckBox chapter_support;
  	private JTextField chapter_interval;
  	private JCheckBox videoHWacceleration;
  	private JTextField langs;
  	private JTextField defaultsubs;
  	private JTextField forcedsub;
  	private JTextField forcedtags;
  	private JTextField alternateSubFolder;
  	private JButton folderSelectButton;
  	private JCheckBox autoloadExternalSubtitles;
  	private JTextField defaultaudiosubs;
  	private JComboBox subtitleCodePage;
  	private JTextField defaultfont;
  	private JButton fontselect;
  	private JCheckBox fribidi;
  	private JTextField ass_scale;
  	private JTextField ass_outline;
  	private JTextField ass_shadow;
  	private JTextField ass_margin;
  	private JButton subColor;
  	private JCheckBox forceExternalSubtitles;
  	private JCheckBox useEmbeddedSubtitlesStyle;
  	private JTextField depth3D;
  
  	/*
  	 * 16 cores is the maximum allowed by MEncoder as of MPlayer r34863.
  	 * Revisions before that allowed only 8.
  	 */
  	private static final int MAX_CORES = 16;
  
  	private void updateEngineModel() {
  		ArrayList<String> engines = new ArrayList<>();
  		Object root = tree.getModel().getRoot();
  		for (int i = 0; i < tree.getModel().getChildCount(root); i++) {
  			Object firstChild = tree.getModel().getChild(root, i);
  			if (!tree.getModel().isLeaf(firstChild)) {
  				for (int j = 0; j < tree.getModel().getChildCount(firstChild); j++) {
  					Object secondChild = tree.getModel().getChild(firstChild, j);
  					if (secondChild instanceof TreeNodeSettings) {
  						TreeNodeSettings tns = (TreeNodeSettings) secondChild;
  						if (tns.isEnable() && tns.getPlayer() != null) {
  							engines.add(tns.getPlayer().id());
  						}
  					}
  				}
  			}
  		}
  		configuration.setEnginesAsList(engines);
  	}
  
  	private void handleCardComponentChange(Component component) {
  		tabbedPanel.setPreferredSize(component.getPreferredSize());
  		tabbedPanel.getParent().invalidate();
  		tabbedPanel.getParent().validate();
  		tabbedPanel.getParent().repaint();
  	}
  
  	public JComponent build() {
  		String colSpec = FormLayoutUtil.getColSpec(MAIN_COL_SPEC, orientation);
  		FormLayout mainlayout = new FormLayout(colSpec, MAIN_ROW_SPEC);
  		PanelBuilder builder = new PanelBuilder(mainlayout);
  		builder.border(Borders.DLU4);
  
  		builder.opaque(true);
  
  		CellConstraints cc = new CellConstraints();
  
  		if (!configuration.isHideAdvancedOptions()) {
  			builder.add(buildRightTabbedPanel(), FormLayoutUtil.flip(cc.xyw(4, 1, 3), colSpec, orientation));
  			builder.add(buildLeft(), FormLayoutUtil.flip(cc.xy(2, 1), colSpec, orientation));
  		} else {
  			builder.add(buildRightTabbedPanel(), FormLayoutUtil.flip(cc.xyw(2, 1, 5), colSpec, orientation));
  			builder.add(buildLeft(), FormLayoutUtil.flip(cc.xy(2, 1), colSpec, orientation));
  		}
  
  		JPanel panel = builder.getPanel();
  		
  		// Apply the orientation to the panel and all components in it
  		panel.applyComponentOrientation(orientation);
  
  		return panel;
  	}
  
  	private JComponent buildRightTabbedPanel() {
  		cl = new CardLayout();
  		tabbedPanel = new JPanel(cl);
  		tabbedPanel.setBorder(BorderFactory.createEmptyBorder());
  		JScrollPane scrollPane = new JScrollPane(tabbedPanel);
  		scrollPane.setBorder(BorderFactory.createEmptyBorder());
  		return scrollPane;
  	}
  
  	public JComponent buildLeft() {
  		String colSpec = FormLayoutUtil.getColSpec(LEFT_COL_SPEC, orientation);
  		FormLayout layout = new FormLayout(colSpec, LEFT_ROW_SPEC);
  		PanelBuilder builder = new PanelBuilder(layout);
  		builder.border(Borders.EMPTY);
  		builder.opaque(false);
  
  		CellConstraints cc = new CellConstraints();
  
  		CustomJButton but = new CustomJButton(LooksFrame.readImageIcon("button-arrow-down.png"));
  		but.setToolTipText(Messages.getString("TrTab2.6"));
  		but.addActionListener(new ActionListener() {
  			@Override
  			public void actionPerformed(ActionEvent e) {
  				TreePath path = tree.getSelectionModel().getSelectionPath();
  				if (path != null && path.getLastPathComponent() instanceof TreeNodeSettings) {
  					TreeNodeSettings node = ((TreeNodeSettings) path.getLastPathComponent());
  					if (node.getPlayer() != null) {
  						DefaultTreeModel dtm = (DefaultTreeModel) tree.getModel();   // get the tree model
  						//now get the index of the selected node in the DefaultTreeModel
  						int index = dtm.getIndexOfChild(node.getParent(), node);
  						// if selected node is first, return (can't move it up)
  						if (index < node.getParent().getChildCount() - 1) {
  							dtm.insertNodeInto(node, (DefaultMutableTreeNode) node.getParent(), index + 1);   // move the node
  							dtm.reload();
  							for (int i = 0; i < tree.getRowCount(); i++) {
  								tree.expandRow(i);
  							}
  							tree.getSelectionModel().setSelectionPath(new TreePath(node.getPath()));
  							updateEngineModel();
  						}
  					}
  				}
  			}
  		});
  		builder.add(but, FormLayoutUtil.flip(cc.xy(2, 3), colSpec, orientation));
  
  		CustomJButton but2 = new CustomJButton(LooksFrame.readImageIcon("button-arrow-up.png"));
  		but2.setToolTipText(Messages.getString("TrTab2.6"));
  		but2.addActionListener(new ActionListener() {
  			@Override
  			public void actionPerformed(ActionEvent e) {
  				TreePath path = tree.getSelectionModel().getSelectionPath();
  				if (path != null && path.getLastPathComponent() instanceof TreeNodeSettings) {
  					TreeNodeSettings node = ((TreeNodeSettings) path.getLastPathComponent());
  					if (node.getPlayer() != null) {
  						DefaultTreeModel dtm = (DefaultTreeModel) tree.getModel();   // get the tree model
  						//now get the index of the selected node in the DefaultTreeModel
  						int index = dtm.getIndexOfChild(node.getParent(), node);
  						// if selected node is first, return (can't move it up)
  						if (index != 0) {
  							dtm.insertNodeInto(node, (DefaultMutableTreeNode) node.getParent(), index - 1);   // move the node
  							dtm.reload();
  							for (int i = 0; i < tree.getRowCount(); i++) {
  								tree.expandRow(i);
  							}
  							tree.getSelectionModel().setSelectionPath(new TreePath(node.getPath()));
  							updateEngineModel();
  						}
  					}
  				}
  			}
  		});
  		builder.add(but2, FormLayoutUtil.flip(cc.xy(3, 3), colSpec, orientation));
  
  		CustomJButton but3 = new CustomJButton(LooksFrame.readImageIcon("button-toggleengine.png"));
  		but3.setToolTipText(Messages.getString("TrTab2.0"));
  		but3.addActionListener(new ActionListener() {
  			@Override
  			public void actionPerformed(ActionEvent e) {
  				TreePath path = tree.getSelectionModel().getSelectionPath();
  				if (path != null && path.getLastPathComponent() instanceof TreeNodeSettings && ((TreeNodeSettings) path.getLastPathComponent()).getPlayer() != null) {
  					((TreeNodeSettings) path.getLastPathComponent()).setEnable(!((TreeNodeSettings) path.getLastPathComponent()).isEnable());
  					updateEngineModel();
  					tree.updateUI();
  				}
  			}
  		});
  		builder.add(but3, FormLayoutUtil.flip(cc.xy(4, 3), colSpec, orientation));
  
  		DefaultMutableTreeNode root = new DefaultMutableTreeNode(Messages.getString("TrTab2.11"));
  		TreeNodeSettings commonEnc = new TreeNodeSettings(Messages.getString("TrTab2.5"), null, buildCommon());
  		commonEnc.getConfigPanel().addComponentListener(new ComponentAdapter() {
  			@Override
  			public void componentShown(ComponentEvent e) {
  				handleCardComponentChange(e.getComponent());
  			}
  		});
  		tabbedPanel.add(commonEnc.id(), commonEnc.getConfigPanel());
  		root.add(commonEnc);
  
  		parent = new DefaultMutableTreeNode[5];
  		parent[0] = new DefaultMutableTreeNode(Messages.getString("TrTab2.14"));
  		parent[1] = new DefaultMutableTreeNode(Messages.getString("TrTab2.15"));
  		parent[2] = new DefaultMutableTreeNode(Messages.getString("TrTab2.16"));
  		parent[3] = new DefaultMutableTreeNode(Messages.getString("TrTab2.17"));
  		parent[4] = new DefaultMutableTreeNode(Messages.getString("TrTab2.18"));
  		root.add(parent[0]);
  		root.add(parent[1]);
  		root.add(parent[2]);
  		root.add(parent[3]);
  		root.add(parent[4]);
  
  		tree = new JTree(new DefaultTreeModel(root)) {
  			private static final long serialVersionUID = -6703434752606636290L;
  		};
  		tree.setRootVisible(false);
  		tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
  		tree.addTreeSelectionListener(new TreeSelectionListener() {
  			@Override
  			public void valueChanged(TreeSelectionEvent e) {
  				if (e.getNewLeadSelectionPath() != null && e.getNewLeadSelectionPath().getLastPathComponent() instanceof TreeNodeSettings) {
  					TreeNodeSettings tns = (TreeNodeSettings) e.getNewLeadSelectionPath().getLastPathComponent();
  					cl.show(tabbedPanel, tns.id());
  				}
  			}
  		});
  
  		tree.setRequestFocusEnabled(false);
  		tree.setCellRenderer(new TreeRenderer());
  		JScrollPane pane = new JScrollPane(tree, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
  
  		builder.add(pane, FormLayoutUtil.flip(cc.xyw(2, 1, 4), colSpec, orientation));
  
  		builder.addLabel(Messages.getString("TrTab2.19"), FormLayoutUtil.flip(cc.xyw(2, 5, 4), colSpec, orientation));
  		builder.addLabel(Messages.getString("TrTab2.20"), FormLayoutUtil.flip(cc.xyw(2, 7, 4), colSpec, orientation));
  
  		JPanel panel = builder.getPanel();
  
  		// Apply the orientation to the panel and all components in it
  		panel.applyComponentOrientation(orientation);
  
  		return panel;
  	}
  
  	public void addEngines() {
  		ArrayList<Player> disPlayers = new ArrayList<>();
  		ArrayList<Player> ordPlayers = new ArrayList<>();
  		PMS r = PMS.get();
  
  		for (String id : configuration.getEnginesAsList(r.getRegistry())) {
  			//boolean matched = false;
  			for (Player p : PlayerFactory.getAllPlayers()) {
  				if (p.id().equals(id)) {
  					ordPlayers.add(p);
  					if (p.isGPUAccelerationReady()) {
  						videoHWacceleration.setEnabled(true);
  						videoHWacceleration.setSelected(configuration.isGPUAcceleration());
  					}
  					//matched = true;
  				}
  			}
  		}
  
  		for (Player p : PlayerFactory.getAllPlayers()) {
  			if (!ordPlayers.contains(p)) {
  				ordPlayers.add(p);
  				disPlayers.add(p);
  			}
  		}
  
  		for (Player p : ordPlayers) {
  			TreeNodeSettings engine = new TreeNodeSettings(p.name(), p, null);
  
  			if (disPlayers.contains(p)) {
  				engine.setEnable(false);
  			}
  
  			JComponent jc = engine.getConfigPanel();
  			if (jc == null) {
  				jc = buildEmpty();
  			}
  
  			jc.addComponentListener(new ComponentAdapter() {
  				@Override
  				public void componentShown(ComponentEvent e) {
  					handleCardComponentChange(e.getComponent());
  				}
  			});
  
  			tabbedPanel.add(engine.id(), jc);
  			parent[p.purpose()].add(engine);
  		}
  
  		for (int i = 0; i < tree.getRowCount(); i++) {
  			tree.expandRow(i);
  		}
  
  		tree.setSelectionRow(0);
  	}
  
  	public JComponent buildEmpty() {
  		String colSpec = FormLayoutUtil.getColSpec(EMPTY_COL_SPEC, orientation);
  		FormLayout layout = new FormLayout(colSpec, EMPTY_ROW_SPEC);
  		PanelBuilder builder = new PanelBuilder(layout);
  		builder.border(Borders.EMPTY);
  		builder.opaque(false);
  
  		CellConstraints cc = new CellConstraints();
  
  		builder.addSeparator(Messages.getString("TrTab2.1"), FormLayoutUtil.flip(cc.xyw(1, 1, 3), colSpec, orientation));
  
  		JPanel panel = builder.getPanel();
  
  		// Apply the orientation to the panel and all components in it
  		panel.applyComponentOrientation(orientation);
  
  		return panel;
  	}
  
  	public JComponent buildCommon() {
  		String colSpec = FormLayoutUtil.getColSpec(COMMON_COL_SPEC, orientation);
  		FormLayout layout = new FormLayout(colSpec, COMMON_ROW_SPEC);
  		PanelBuilder builder = new PanelBuilder(layout);
  		builder.border(Borders.EMPTY);
  		builder.opaque(false);
  
  		CellConstraints cc = new CellConstraints();
  
  		JComponent cmp = builder.addSeparator(Messages.getString("NetworkTab.5"), FormLayoutUtil.flip(cc.xyw(1, 1, 3), colSpec, orientation));
  		cmp = (JComponent) cmp.getComponent(0);
  		cmp.setFont(cmp.getFont().deriveFont(Font.BOLD));
  
  		disableSubs = new JCheckBox(Messages.getString("TrTab2.51"), configuration.isDisableSubtitles());
  		disableSubs.setContentAreaFilled(false);
   		disableSubs.addItemListener(new ItemListener() {
  			@Override
  			public void itemStateChanged(ItemEvent e) {
  				configuration.setDisableSubtitles((e.getStateChange() == ItemEvent.SELECTED));
  			}
  		});
  
  		if (!configuration.isHideAdvancedOptions()) {
  			builder.addLabel(Messages.getString("TrTab2.23"), FormLayoutUtil.flip(cc.xy(1, 3), colSpec, orientation));
  			maxbuffer = new JTextField("" + configuration.getMaxMemoryBufferSize());
  			maxbuffer.setToolTipText(Messages.getString("TrTab2.73"));
  			maxbuffer.addKeyListener(new KeyAdapter() {
  				@Override
  				public void keyReleased(KeyEvent e) {
  					try {
  						int ab = Integer.parseInt(maxbuffer.getText());
  						configuration.setMaxMemoryBufferSize(ab);
  					} catch (NumberFormatException nfe) {
  						LOGGER.debug("Could not parse max memory buffer size from \"" + maxbuffer.getText() + "\"");
  					}
  				}
  			});
  			builder.add(maxbuffer, FormLayoutUtil.flip(cc.xy(3, 3), colSpec, orientation));
  
  			String nCpusLabel = String.format(Messages.getString("TrTab2.24"), Runtime.getRuntime().availableProcessors());
  			builder.addLabel(nCpusLabel, FormLayoutUtil.flip(cc.xy(1, 5), colSpec, orientation));
  
  			String[] guiCores = new String[MAX_CORES];
  			for (int i = 0; i < MAX_CORES; i++) {
  				guiCores[i] = Integer.toString(i + 1);
  			}
  			nbcores = new JComboBox(guiCores);
  			nbcores.setEditable(false);
  			int nbConfCores = configuration.getNumberOfCpuCores();
  			if (nbConfCores > 0 && nbConfCores <= MAX_CORES) {
  				nbcores.setSelectedItem(Integer.toString(nbConfCores));
  			} else {
  				nbcores.setSelectedIndex(0);
  			}
  
  			nbcores.addItemListener(new ItemListener() {
  				@Override
  				public void itemStateChanged(ItemEvent e) {
  					configuration.setNumberOfCpuCores(Integer.parseInt(e.getItem().toString()));
  				}
  			});
  			builder.add(nbcores, FormLayoutUtil.flip(cc.xy(3, 5), colSpec, orientation));
  
  			chapter_support = new JCheckBox(Messages.getString("TrTab2.52"), configuration.isChapterSupport());
  			chapter_support.setContentAreaFilled(false);
  			chapter_support.addItemListener(new ItemListener() {
  				@Override
  				public void itemStateChanged(ItemEvent e) {
  					configuration.setChapterSupport((e.getStateChange() == ItemEvent.SELECTED));
  					chapter_interval.setEnabled(configuration.isChapterSupport());
  				}
  			});
  			builder.add(GuiUtil.getPreferredSizeComponent(chapter_support), FormLayoutUtil.flip(cc.xy(1, 7), colSpec, orientation));
  
  			chapter_interval = new JTextField("" + configuration.getChapterInterval());
  			chapter_interval.setEnabled(configuration.isChapterSupport());
  			chapter_interval.addKeyListener(new KeyAdapter() {
  				@Override
  				public void keyReleased(KeyEvent e) {
  					try {
  						int ab = Integer.parseInt(chapter_interval.getText());
  						configuration.setChapterInterval(ab);
  					} catch (NumberFormatException nfe) {
  						LOGGER.debug("Could not parse chapter interval from \"" + chapter_interval.getText() + "\"");
  					}
  				}
  			});
  			builder.add(chapter_interval, FormLayoutUtil.flip(cc.xy(3, 7), colSpec, orientation));
  			builder.add(GuiUtil.getPreferredSizeComponent(disableSubs), FormLayoutUtil.flip(cc.xy(1, 9), colSpec, orientation));
  		} else {
  			builder.add(GuiUtil.getPreferredSizeComponent(disableSubs), FormLayoutUtil.flip(cc.xy(1, 3), colSpec, orientation));
  		}
  
  		JTabbedPane setupTabbedPanel = new JTabbedPane();
  		setupTabbedPanel.setUI(new CustomTabbedPaneUI());
  
  		setupTabbedPanel.addTab(Messages.getString("TrTab2.67"), buildVideoSetupPanel());
  		setupTabbedPanel.addTab(Messages.getString("TrTab2.68"), buildAudioSetupPanel());
  		setupTabbedPanel.addTab(Messages.getString("MEncoderVideo.8"), buildSubtitlesSetupPanel());
  
  		if (!configuration.isHideAdvancedOptions()) {
  			builder.add(setupTabbedPanel, FormLayoutUtil.flip(cc.xywh(1, 11, 3, 3), colSpec, orientation));
  		}
  
  		JPanel panel = builder.getPanel();
  		panel.applyComponentOrientation(orientation);
  
  		return panel;
  	}
  
  	private JComponent buildVideoSetupPanel() {
  		String colSpec = FormLayoutUtil.getColSpec("left:pref, 3dlu, pref:grow", orientation);
  		FormLayout layout = new FormLayout(colSpec, "$lgap, 2*(pref, 3dlu), 10dlu, 10dlu, 4*(pref, 3dlu), pref");
  		PanelBuilder builder = new PanelBuilder(layout);
  		builder.border(Borders.DLU4);
  		CellConstraints cc = new CellConstraints();
  
  		videoHWacceleration = new JCheckBox(Messages.getString("TrTab2.70"), configuration.isGPUAcceleration());
  		videoHWacceleration.addItemListener(new ItemListener() {
  			@Override
  			public void itemStateChanged(ItemEvent e) {
  				configuration.setGPUAcceleration((e.getStateChange() == ItemEvent.SELECTED));
  			}
  		});
  		builder.add(GuiUtil.getPreferredSizeComponent(videoHWacceleration), FormLayoutUtil.flip(cc.xy(1, 2), colSpec, orientation));
  		videoHWacceleration.setEnabled(false);
  
  		mpeg2remux = new JCheckBox(Messages.getString("MEncoderVideo.39"), configuration.isMencoderRemuxMPEG2());
  		mpeg2remux.setToolTipText(Messages.getString("TrTab2.82") + (Platform.isWindows() ? " " + Messages.getString("TrTab2.21") : "") + "</html>");
  		mpeg2remux.setContentAreaFilled(false);
  		mpeg2remux.addItemListener(new ItemListener() {
  			@Override
  			public void itemStateChanged(ItemEvent e) {
  				configuration.setMencoderRemuxMPEG2((e.getStateChange() == ItemEvent.SELECTED));
  			}
  		});
  		builder.add(GuiUtil.getPreferredSizeComponent(mpeg2remux), FormLayoutUtil.flip(cc.xy(1, 6), colSpec, orientation));
  
  		JComponent cmp = builder.addSeparator(Messages.getString("TrTab2.7"), FormLayoutUtil.flip(cc.xyw(1, 8, 3), colSpec, orientation));
  