@SuppressWarnings("unchecked")
public GoBuildTagsUI() {
myPanel.setBorder(IdeBorderFactory.createTitledBorder("Build tags"));
myDefaultOSValue = "Default (" + GoUtil.systemOS() + ")";
myDefaultArchValue = "Default (" + GoUtil.systemArch() + ")";
myDefaultCgo = "Default (" + cgo(GoUtil.systemCgo(myDefaultOSValue, myDefaultArchValue)) + ")";
myCustomTagsField.setDialogCaption("Custom Build Tags");
myOSCombo.setModel(createModel(GoConstants.KNOWN_OS, myDefaultOSValue));
myArchCombo.setModel(createModel(GoConstants.KNOWN_ARCH, myDefaultArchValue));
myCgoComboModel = createModel(ContainerUtil.newArrayList(ENABLED, DISABLED), myDefaultCgo);
myCgoCombo.setModel(myCgoComboModel);
myCompilerCombo.setModel(createModel(GoConstants.KNOWN_COMPILERS, GoBuildTargetSettings.ANY_COMPILER));
ActionListener updateCgoListener = event -> {
String selected = StringUtil.notNullize(myCgoComboModel.getSelected(), myDefaultCgo);
String oldDefault = myDefaultCgo;
String os = expandDefault(selected(myOSCombo, myDefaultOSValue), GoUtil.systemOS());
String arch = expandDefault(selected(myArchCombo, myDefaultArchValue), GoUtil.systemArch());
myDefaultCgo = "Default (" + cgo(GoUtil.systemCgo(os, arch)) + ")";
myCgoComboModel.update(ContainerUtil.newArrayList(myDefaultCgo, ENABLED, DISABLED));
myCgoComboModel.setSelectedItem(oldDefault.equals(selected) ? myDefaultCgo : selected);
};
myOSCombo.addActionListener(updateCgoListener);
myArchCombo.addActionListener(updateCgoListener);
}