From d29cc9ba3e0c329082775f39994973877bd06b37 Mon Sep 17 00:00:00 2001 From: jihye kim Date: Mon, 16 Apr 2012 16:00:17 +0900 Subject: [PATCH] [Title] fix synchronization issue - location inject and cancel button [Type] bug fix [Module] event injector [Priority] major [Jira#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] --- .../location/core/injector/LocationInjector.java | 18 +++++++++++++ .../src/org/tizen/location/log/page/LogFile.java | 30 +++++++++++++++++++--- .../org/tizen/location/manual/page/Coordinate.java | 27 +++++++++++++++---- .../src/org/tizen/location/map/page/MapImage.java | 14 +++++++--- package/pkginfo.manifest | 4 +-- 5 files changed, 79 insertions(+), 14 deletions(-) diff --git a/org.tizen.location.core/src/org/tizen/location/core/injector/LocationInjector.java b/org.tizen.location.core/src/org/tizen/location/core/injector/LocationInjector.java index e680db5..c16f576 100644 --- a/org.tizen.location.core/src/org/tizen/location/core/injector/LocationInjector.java +++ b/org.tizen.location.core/src/org/tizen/location/core/injector/LocationInjector.java @@ -53,6 +53,9 @@ public class LocationInjector implements ISelectionListener { private final String setLogMode = "vconftool set -t int db/location/replay/ReplayMode 1"; // NMEA MODE(LOG MODE) private final String setManualMode = "vconftool set -t int db/location/replay/ReplayMode 2"; // MANUAL MODE + private boolean isChange = false; + private GeoLocation location = null; + public LocationInjector() { InjectorView.getDefault().addSelectionListener(this); // TargetConnectionControl.addTargetConnectionListener(this); @@ -122,6 +125,10 @@ public class LocationInjector implements ISelectionListener { } } + public void injectChange(GeoLocation location) { + this.location = location; + this.isChange = true; + } public void inject(GeoLocation location, IProgressMonitor monitor) throws IOException { if (monitor == null) { monitor = new NullProgressMonitor(); @@ -152,6 +159,14 @@ public class LocationInjector implements ISelectionListener { setStopMode(); return; } + + if (isChange) { + if (!injectLocation(this.location.getLatitude(), this.location.getLongitude())) { + monitor.setCanceled(true); + return ; + } + isChange = false; + } } } @@ -199,6 +214,9 @@ public class LocationInjector implements ISelectionListener { this.monitor = monitor; } + public boolean isCanceld() { + return this.monitor.isCanceled(); + } //@Override public void connect() { } diff --git a/org.tizen.location.log/src/org/tizen/location/log/page/LogFile.java b/org.tizen.location.log/src/org/tizen/location/log/page/LogFile.java index f5db233..8f52c2d 100644 --- a/org.tizen.location.log/src/org/tizen/location/log/page/LogFile.java +++ b/org.tizen.location.log/src/org/tizen/location/log/page/LogFile.java @@ -65,8 +65,8 @@ public class LogFile extends AbstractInjectorPage { private Button injectButton; private Button cancelButton; - private LocationInjector injector; - + private LocationInjector injector = null; + private Job injectJob = null; public LogFile(AbstractInjectorItem item, String name) { super(item, name); } @@ -117,11 +117,23 @@ public class LogFile extends AbstractInjectorPage { @Override public void widgetSelected(SelectionEvent e) { + if(injector != null) { + injector.setCancel(true); + if (injectJob != null) { + try { + injectJob.join(); + } catch (InterruptedException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } + } + final File file = new File(filenameText.getText()); if (file.exists()) { - Job injectJob = new Job("Inject Job") { - + injectJob = new Job("Inject Job") { + @Override protected IStatus run(IProgressMonitor monitor) { try { @@ -138,6 +150,8 @@ public class LogFile extends AbstractInjectorPage { } } catch (IOException e) { return Status.CANCEL_STATUS; + } finally { + injector = null; } return Status.OK_STATUS; } @@ -171,6 +185,14 @@ public class LogFile extends AbstractInjectorPage { @Override public void widgetSelected(SelectionEvent e) { injector.setCancel(true); + if (injectJob != null) { + try { + injectJob.join(); + } catch (InterruptedException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } injectButton.setEnabled(true); cancelButton.setEnabled(false); ((Log) getParent()).setSiblingsEnabled(true); diff --git a/org.tizen.location.manual/src/org/tizen/location/manual/page/Coordinate.java b/org.tizen.location.manual/src/org/tizen/location/manual/page/Coordinate.java index 7cf849f..0d77261 100644 --- a/org.tizen.location.manual/src/org/tizen/location/manual/page/Coordinate.java +++ b/org.tizen.location.manual/src/org/tizen/location/manual/page/Coordinate.java @@ -67,8 +67,8 @@ public class Coordinate extends AbstractInjectorPage { private Button injectButton; private Button cancelButton; - private LocationInjector injector; - + private LocationInjector injector = null; + private Job injectJob = null; public Coordinate(AbstractInjectorItem item, String name) { super(item, name); } @@ -111,8 +111,15 @@ public class Coordinate extends AbstractInjectorPage { injectButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { - if(injector != null) - injector.setCancel(true); + if(injector != null && !injector.isCanceld()) { + injectButton.setEnabled(false); + Double latitude = Double.parseDouble(latitudeText.getText().trim()); + Double longitude = Double.parseDouble(longitudeText.getText().trim()); + final GeoLocation location = new GeoLocation(latitude, longitude); + injector.injectChange(location); + return; + } + Double latitude = Double.parseDouble(latitudeText.getText().trim()); Double longitude = Double.parseDouble(longitudeText.getText().trim()); final GeoLocation location = new GeoLocation(latitude, longitude); @@ -125,7 +132,7 @@ public class Coordinate extends AbstractInjectorPage { // NMEASentences.add(new NMEA0183_GPRMC(Double.parseDouble(latitudeText.getText().trim()), Double.parseDouble(longitudeText.getText().trim()))); // NMEASentences.add(new NMEA0183_GPGSA()); - Job injectJob = new Job("Inject Job") { + injectJob = new Job("Inject Job") { @Override protected IStatus run(IProgressMonitor monitor) { @@ -138,6 +145,8 @@ public class Coordinate extends AbstractInjectorPage { } } catch (IOException e) { return Status.CANCEL_STATUS; + } finally { + injector = null; } return Status.OK_STATUS; } @@ -164,6 +173,14 @@ public class Coordinate extends AbstractInjectorPage { @Override public void widgetSelected(SelectionEvent e) { injector.setCancel(true); + if (injectJob != null) { + try { + injectJob.join(); + } catch (InterruptedException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } injectButton.setEnabled(validateValues()); cancelButton.setEnabled(false); ((Manual) getParent()).setSiblingsEnabled(true); diff --git a/org.tizen.location.map/src/org/tizen/location/map/page/MapImage.java b/org.tizen.location.map/src/org/tizen/location/map/page/MapImage.java index 21acfd5..b97829c 100644 --- a/org.tizen.location.map/src/org/tizen/location/map/page/MapImage.java +++ b/org.tizen.location.map/src/org/tizen/location/map/page/MapImage.java @@ -87,8 +87,8 @@ public class MapImage extends AbstractInjectorPage { private Button resetButton; private Button cancelButton; - private LocationInjector injector; - + private LocationInjector injector = null; + private Job injectJob = null; public MapImage(AbstractInjectorItem item, String name, DefaultTableModel model) { super(item, name); @@ -343,7 +343,7 @@ public class MapImage extends AbstractInjectorPage { // NMEASentences.add(new NMEA0183_GPGSA()); // } - Job injectJob = new Job("Inject Job") { + injectJob = new Job("Inject Job") { @Override protected IStatus run(IProgressMonitor monitor) { @@ -412,6 +412,14 @@ public class MapImage extends AbstractInjectorPage { @Override public void widgetSelected(SelectionEvent e) { injector.setCancel(true); + if (injectJob != null) { + try { + injectJob.join(); + } catch (InterruptedException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + } injectButton.setEnabled(true); browser.setEnabled(true); resetButton.setEnabled(true); diff --git a/package/pkginfo.manifest b/package/pkginfo.manifest index 0a07d06..478aa7a 100644 --- a/package/pkginfo.manifest +++ b/package/pkginfo.manifest @@ -1,5 +1,5 @@ Package:eventinjector-eplugin -Version:0.2.17 +Version:0.2.18 OS:linux Build-host-os:linux Maintainer:yeongkyoon Lee , sungmin Ha @@ -9,7 +9,7 @@ Install-dependency:common-eplugin[linux], base-ide-product[linux] Source:eventinjector-eplugin Package:eventinjector-eplugin -Version:0.2.17 +Version:0.2.18 OS:windows Build-host-os:linux Maintainer:yeongkyoon Lee , sungmin Ha -- 2.7.4