/* * Copyright (c) 2016, Alex Blewitt, Bandlem Ltd * Copyright (c) 2016, Packt Publishing Ltd * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package com.packtpub.e4.clock.ui.internal; import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; public class TimeZoneViewerComparator extends ViewerComparator { public int compare(Viewer viewer, Object z1, Object z2) { int compare; if (z1 instanceof ZoneId && z2 instanceof ZoneId) { Instant now = Instant.now(); ZonedDateTime zdt1 = ZonedDateTime.ofInstant(now, (ZoneId) z1); ZonedDateTime zdt2 = ZonedDateTime.ofInstant(now, (ZoneId) z2); compare = zdt1.compareTo(zdt2); } else { compare = z1.toString().compareTo(z2.toString()); } boolean reverse = Boolean.parseBoolean(String.valueOf(viewer.getData("REVERSE"))); return reverse ? -compare : compare; } }