package krasa.grepconsole.gui.table.column;
import javax.swing.*;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import krasa.grepconsole.gui.SettingsDialog;
import krasa.grepconsole.gui.SoundSettingsForm;
import krasa.grepconsole.model.GrepExpressionItem;
import org.jetbrains.annotations.Nullable;
import com.intellij.openapi.ui.DialogBuilder;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.util.IconLoader;
/**
* @author Vojtech Krasa
*/
public class SoundColumn extends ButtonColumnInfo<GrepExpressionItem> {
public static final Icon SOUND_OFF = IconLoader.getIcon("soundOff.gif", SoundColumn.class);
public static final Icon SOUND_ON = IconLoader.getIcon("soundOn.gif", SoundColumn.class);
private final SettingsDialog settingsDialog;
protected SoundSettingsForm soundSettingsForm;
public SoundColumn(String sound, SettingsDialog settingsDialog) {
super(sound);
this.settingsDialog = settingsDialog;
soundSettingsForm = new SoundSettingsForm();
}
private boolean showDialog(GrepExpressionItem item) {
DialogBuilder builder = new DialogBuilder(settingsDialog.getRootComponent());
builder.setCenterPanel(soundSettingsForm.getRoot());
builder.setDimensionServiceKey("GrepConsoleSound");
builder.setTitle("Sound settings");
builder.removeAllActions();
builder.addOkAction();
builder.addCancelAction();
soundSettingsForm.setData(item.getSound());
boolean isOk = builder.show() == DialogWrapper.OK_EXIT_CODE;
if (isOk) {
soundSettingsForm.getData(item.getSound());
}
return isOk;
}
@Override
void onButtonClicked(GrepExpressionItem item) {
showDialog(item);
}
@Nullable
@Override
public TableCellEditor getEditor(GrepExpressionItem o) {
return new ButtonEditor<GrepExpressionItem>(new JCheckBox()) {
@Override
protected void setStyle(GrepExpressionItem grepExpressionItem) {
if (grepExpressionItem.getSound().isEnabled()) {
button.setIcon(SOUND_ON);
} else {
button.setIcon(SOUND_OFF);
}
}
@Override
protected void onButtonClicked(GrepExpressionItem item) {
SoundColumn.this.onButtonClicked(item);
}
};
}
@Nullable
@Override
public TableCellRenderer getRenderer(GrepExpressionItem aVoid) {
return new ButtonRenderer() {
@Override
protected void setStyle(Object value) {
GrepExpressionItem grepExpressionItem = (GrepExpressionItem) value;
if (grepExpressionItem.getSound().isEnabled()) {
setIcon(SOUND_ON);
} else {
setIcon(SOUND_OFF);
}
}
};
}
}