package sk.sorien.pimpleplugin.ui;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.StatusBar;
import com.intellij.openapi.wm.impl.status.EditorBasedWidget;
import com.intellij.util.Consumer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import sk.sorien.pimpleplugin.Configuration;
import sk.sorien.pimpleplugin.ProjectComponent;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.awt.event.MouseEvent;
import java.io.File;
public class ContainerStatusBarWidget extends EditorBasedWidget implements com.intellij.openapi.wm.StatusBarWidget.TextPresentation, com.intellij.openapi.wm.StatusBarWidget {
private StatusBar statusBar;
private String text;
private Project project;
public ContainerStatusBarWidget(Project project) {
super(project);
this.project = project;
}
@NotNull
@Override
public String ID() {
return "silex.statusbar.widget";
}
@Nullable
@Override
public WidgetPresentation getPresentation(@NotNull PlatformType platformType) {
return this;
}
@Override
public void install(@NotNull StatusBar statusBar) {
this.statusBar = statusBar;
}
@Override
public void dispose() {
}
public void setText(String text) {
this.text = text;
if (statusBar != null) {
statusBar.updateWidget(this.ID());
}
}
@NotNull
@Override
public String getText() {
return "Pimple Dump: " + text;
}
@NotNull
@Override
public String getMaxPossibleText() {
return "";
}
@Override
public float getAlignment() {
return 0;
}
@Nullable
@Override
public String getTooltipText() {
return null;
}
@Nullable
@Override
public Consumer<MouseEvent> getClickConsumer() {
return new Consumer<MouseEvent>() {
@Override
public void consume(MouseEvent mouseEvent) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Pimple Definition File", "json"));
fileChooser.setCurrentDirectory(new File(project.getBasePath()));
int returnValue = fileChooser.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
Configuration.getInstance(project).containerDefinitionFileName = fileChooser.getSelectedFile().getAbsolutePath();
ProjectComponent.configChanged(project);
}
}
};
}
}