use of org.yamcs.studio.core.TimeInterval in project yamcs-studio by yamcs.
the class ArchiveIndexReceiver method getIndex.
public void getIndex(TimeInterval interval) {
if (receiving) {
log.info("already receiving data");
return;
}
ArchiveCatalogue catalogue = ArchiveCatalogue.getInstance();
catalogue.downloadIndexes(interval, data -> {
try {
IndexResult response = IndexResult.parseFrom(data);
log.fine(String.format("Received %d archive records", response.getRecordsCount()));
archiveView.receiveArchiveRecords(response);
} catch (InvalidProtocolBufferException e) {
throw new YamcsApiException("Failed to decode server message", e);
}
}).whenComplete((data, exc) -> {
if (exc == null) {
log.info("Done receiving archive records.");
archiveView.receiveArchiveRecordsFinished();
receiving = false;
} else {
archiveView.receiveArchiveRecordsError(exc.toString());
}
});
}
use of org.yamcs.studio.core.TimeInterval in project yamcs-studio by yamcs.
the class ArchiveView method createActions.
private void createActions() {
IActionBars bars = getViewSite().getActionBars();
IMenuManager mgr = bars.getMenuManager();
mgr.add(new Action("Last day", IAction.AS_RADIO_BUTTON) {
@Override
public void run() {
if (isChecked()) {
Calendar cal = TimeCatalogue.getInstance().getMissionTimeAsCalendar(true);
cal.add(Calendar.DAY_OF_MONTH, -1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
doFilter(TimeInterval.starting(TimeEncoding.fromCalendar(cal)));
}
}
});
mgr.add(new Action("Last week", IAction.AS_RADIO_BUTTON) {
@Override
public void run() {
if (isChecked()) {
Calendar cal = TimeCatalogue.getInstance().getMissionTimeAsCalendar(true);
cal.add(Calendar.DAY_OF_MONTH, -7);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
doFilter(TimeInterval.starting(TimeEncoding.fromCalendar(cal)));
}
}
});
mgr.add(new Action("Last month", IAction.AS_RADIO_BUTTON) {
@Override
public void run() {
if (isChecked()) {
Calendar cal = TimeCatalogue.getInstance().getMissionTimeAsCalendar(true);
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
doFilter(TimeInterval.starting(TimeEncoding.fromCalendar(cal)));
}
}
});
mgr.add(new Action("Last 3 months", IAction.AS_RADIO_BUTTON) {
@Override
public void run() {
if (isChecked()) {
Calendar cal = TimeCatalogue.getInstance().getMissionTimeAsCalendar(true);
cal.add(Calendar.MONTH, -3);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
doFilter(TimeInterval.starting(TimeEncoding.fromCalendar(cal)));
}
}
});
mgr.add(new Action("Last 12 months", IAction.AS_RADIO_BUTTON) {
@Override
public void run() {
if (isChecked()) {
Calendar cal = TimeCatalogue.getInstance().getMissionTimeAsCalendar(true);
cal.add(Calendar.MONTH, -12);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
doFilter(TimeInterval.starting(TimeEncoding.fromCalendar(cal)));
}
}
});
mgr.add(new Action("Custom...", IAction.AS_RADIO_BUTTON) {
@Override
public void run() {
if (isChecked()) {
CustomizeRangeDialog dialog = new CustomizeRangeDialog(Display.getCurrent().getActiveShell());
dialog.setInitialRange(archivePanel.prefs.getInterval());
if (dialog.open() == Window.OK) {
TimeInterval range = new TimeInterval();
if (dialog.hasStartTime())
range.setStart(dialog.getStartTime());
if (dialog.hasStopTime())
range.setStop(dialog.getStopTime());
doFilter(range);
}
}
}
});
}
use of org.yamcs.studio.core.TimeInterval in project yamcs-studio by yamcs.
the class ArchiveView method refreshData.
public void refreshData() {
archivePanel.startReloading();
TimeInterval interval = archivePanel.getRequestedDataInterval();
indexReceiver.getIndex(interval);
}
use of org.yamcs.studio.core.TimeInterval in project yamcs-studio by yamcs.
the class DataView method archiveLoadFinished.
public void archiveLoadFinished() {
for (IndexBox ib : indexBoxes.values()) {
ib.dataLoadFinished();
}
TimeInterval intv = archivePanel.getRequestedDataInterval();
long intvStart = intv.calculateStart();
long intvStop = intv.calculateStop();
if (zoomStack.isEmpty() || intvStart != lastStartTimestamp || intvStop != lastEndTimestamp) {
int w = getViewport().getExtentSize().width;
zoomStack.clear();
long reqStart = intvStart;
long zstart = archivePanel.dataStart;
if (reqStart != TimeEncoding.INVALID_INSTANT)
zstart = Math.min(reqStart, zstart);
long reqStop = intvStop;
long zstop = archivePanel.dataStop;
if (reqStop != TimeEncoding.INVALID_INSTANT)
zstop = Math.max(reqStop, zstop);
long range = zstop - zstart;
zstart -= range / 100;
zstop += range / 100;
zoomStack.push(new ZoomSpec(zstart, zstop, w, zstop - zstart));
}
lastStartTimestamp = intvStart;
lastEndTimestamp = intvStop;
SwingUtilities.invokeLater(() -> {
archivePanel.archiveView.setZoomInEnabled(true);
archivePanel.archiveView.setZoomOutEnabled(false);
archivePanel.archiveView.setZoomClearEnabled(true);
});
refreshDisplay();
}
use of org.yamcs.studio.core.TimeInterval in project yamcs-studio by yamcs.
the class ImportPastCommandsDialog method okPressed.
@Override
protected void okPressed() {
YamcsClient yamcsClient = YamcsPlugin.getYamcsClient();
if (yamcsClient == null) {
MessageDialog.openError(Display.getCurrent().getActiveShell(), "Could not import commands\n", "Disconnected from Yamcs");
return;
}
getButton(IDialogConstants.OK_ID).setEnabled(false);
long start = TimeEncoding.fromCalendar(RCPUtils.toCalendar(startDate, startTime));
long stop = TimeEncoding.fromCalendar(RCPUtils.toCalendar(stopDate, stopTime));
TimeInterval interval = new TimeInterval(start, stop);
ArchiveCatalogue catalogue = ArchiveCatalogue.getInstance();
catalogue.downloadCommands(interval, data -> {
try {
CommandHistoryEntry commandHistoryEntry = CommandHistoryEntry.parseFrom(data);
Display.getDefault().asyncExec(() -> {
cmdhistView.processCommandHistoryEntry(commandHistoryEntry);
});
} catch (InvalidProtocolBufferException e) {
throw new YamcsApiException("Failed to decode server message", e);
}
}).whenComplete((data, exc) -> {
if (exc == null) {
Display.getDefault().asyncExec(() -> {
ImportPastCommandsDialog.super.okPressed();
});
} else {
getButton(IDialogConstants.OK_ID).setEnabled(true);
}
});
}
Aggregations