/**
* Copyright 2014 Microsoft Open Technologies Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.microsoftopentechnologies.intellij.forms;
import com.microsoftopentechnologies.intellij.helpers.azure.AzureRestAPIManager;
import com.microsoftopentechnologies.intellij.helpers.ReadOnlyCellTableModel;
import com.microsoftopentechnologies.intellij.helpers.UIHelper;
import com.microsoftopentechnologies.intellij.model.LogEntry;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import java.awt.*;
import java.util.UUID;
import java.util.Vector;
public class ViewLogForm extends JDialog {
private JTable logTable;
private JPanel mainPanel;
private Icon warningIcon = UIHelper.loadIcon("logwarn.png");
private Icon errorIcon = UIHelper.loadIcon("logerr.png");
private Icon infoIcon = UIHelper.loadIcon("loginfo.png");
public ViewLogForm() {
this.setContentPane(mainPanel);
this.setTitle("Service log");
try {
logTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
ReadOnlyCellTableModel model = new ReadOnlyCellTableModel();
model.addColumn("Level");
model.addColumn("Message");
model.addColumn("Source");
model.addColumn("Time Stamp");
Vector<Object> loadingRow = new Vector<Object>();
loadingRow.add("loading...");
model.addRow(loadingRow);
logTable.setModel(model);
logTable.getColumn("Level").setCellRenderer(new DefaultTableCellRenderer() {
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if(value.toString().equals("information")) {
setIcon(UIHelper.loadIcon("loginfo.png"));
value = "Information";
} else if(value.toString().equals("error")) {
setIcon(UIHelper.loadIcon("logerr.png"));
value = "Error";
} else if(value.toString().equals("warning")) {
setIcon(UIHelper.loadIcon("logwarn.png"));
value = "Warning";
}
super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
return this;
}
});
} catch (Throwable ex) {
this.setCursor(Cursor.getDefaultCursor());
UIHelper.showException("Error loading logs", ex);
}
}
public void queryLog(UUID subscriptionId, String serviceName, String runtime) {
try {
this.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
ReadOnlyCellTableModel model = (ReadOnlyCellTableModel) logTable.getModel();
while(model.getRowCount() > 0)
model.removeRow(0);
for(LogEntry log : AzureRestAPIManager.getManager().listLog(subscriptionId, serviceName, runtime)) {
Vector<Object> row = new Vector<Object>();
row.add(log.getType());
row.add(log.getMessage());
row.add(log.getSource());
row.add(log.getTimeCreated());
model.addRow(row);
}
this.setCursor(Cursor.getDefaultCursor());
} catch (Throwable ex) {
this.setCursor(Cursor.getDefaultCursor());
UIHelper.showException("Error quering logs", ex);
}
}
}