@Override public Object[] getChildren(Object parentElement) { final Object propertyValue = ((Object[]) parentElement)[1]; if (propertyValue instanceof IDockerContainerState) { final IDockerContainerState containerState = (IDockerContainerState) propertyValue; return new Object[] { new Object[] {"ExitCode", containerState.exitCode()}, // $NON-NLS-1$ new Object[] { "Finished at", LabelUtils.toFinishedDate(containerState.finishDate()) }, //$NON-NLS-1$ new Object[] {"Running", containerState.running()}, // $NON-NLS-1$ new Object[] {"Paused", containerState.paused()}, // $NON-NLS-1$ new Object[] {"Pid", containerState.pid()}, // $NON-NLS-1$ }; } else if (propertyValue instanceof IDockerHostConfig) { final IDockerHostConfig hostConfig = (IDockerHostConfig) propertyValue; return new Object[] { new Object[] {"Binds", LabelUtils.reduce(hostConfig.binds())}, // $NON-NLS-1$ new Object[] {"ContainerIDFile", hostConfig.containerIDFile()}, // $NON-NLS-1$ new Object[] {"Dns", LabelUtils.reduce(hostConfig.dns())}, // $NON-NLS-1$ new Object[] {"DnsSearch", LabelUtils.reduce(hostConfig.dnsSearch())}, // $NON-NLS-1$ new Object[] {"Links", splitLinks(hostConfig.links())}, // $NON-NLS-1$ new Object[] {"LxcConf", hostConfig.lxcConf()}, // $NON-NLS-1$ new Object[] {"NetworkMode", hostConfig.networkMode()}, // $NON-NLS-1$ new Object[] {"PortBindings", LabelUtils.reduce(hostConfig.portBindings())}, // $NON-NLS-1$ new Object[] {"Privileged", hostConfig.privileged()}, // $NON-NLS-1$ new Object[] {"PublishAllPorts", hostConfig.publishAllPorts()}, // $NON-NLS-1$ new Object[] {"VolumesFrom", LabelUtils.reduce(hostConfig.volumesFrom())}, // $NON-NLS-1$ }; } else if (propertyValue instanceof IDockerContainerConfig) { final IDockerContainerConfig config = (IDockerContainerConfig) propertyValue; return new Object[] { new Object[] {"AttachStderr", config.attachStderr()}, // $NON-NLS-1$ new Object[] {"AttachStdin", config.attachStdin()}, // $NON-NLS-1$ new Object[] {"AttachStdout", config.attachStdout()}, // $NON-NLS-1$ new Object[] {"Cmd", LabelUtils.reduce(config.cmd())}, // $NON-NLS-1$ new Object[] {"CpuSet", config.cpuset()}, // $NON-NLS-1$ new Object[] {"CpuShares", config.cpuShares()}, // $NON-NLS-1$ new Object[] {"Domainname", config.domainname()}, // $NON-NLS-1$ new Object[] {"Entrypoint", LabelUtils.reduce(config.entrypoint())}, // $NON-NLS-1$ new Object[] {"Env", LabelUtils.reduce(config.env())}, // $NON-NLS-1$ new Object[] {"ExposedPorts", LabelUtils.reduce(config.exposedPorts())}, // $NON-NLS-1$ new Object[] {"Hostname", config.hostname()}, // $NON-NLS-1$ new Object[] {"Image", config.image()}, // $NON-NLS-1$ new Object[] {"Memory", config.memory()}, // $NON-NLS-1$ new Object[] {"MemorySwap", config.memorySwap()}, // $NON-NLS-1$ new Object[] {"NetworkDisabled", config.networkDisabled()}, // $NON-NLS-1$ new Object[] {"OnBuild", config.onBuild()}, // $NON-NLS-1$ new Object[] {"OpenStdin", config.openStdin()}, // $NON-NLS-1$ new Object[] {"PortSpecs", LabelUtils.reduce(config.portSpecs())}, // $NON-NLS-1$ new Object[] {"StdinOnce", config.stdinOnce()}, // $NON-NLS-1$ new Object[] {"Tty", config.tty()}, // $NON-NLS-1$ new Object[] {"Volumes", config.volumes()}, // $NON-NLS-1$ new Object[] {"WorkingDir", config.workingDir()}, // $NON-NLS-1$ }; } else if (propertyValue instanceof IDockerPortBinding) { final IDockerPortBinding portBinding = (IDockerPortBinding) propertyValue; return new Object[] { new Object[] {"Host IP/Port", LabelUtils.toString(portBinding)} // $NON-NLS-1$ }; } else if (propertyValue instanceof IDockerNetworkSettings) { final IDockerNetworkSettings networkSettings = (IDockerNetworkSettings) propertyValue; return new Object[] { new Object[] {"Bridge", networkSettings.bridge()}, // $NON-NLS-1$ new Object[] {"Gateway", networkSettings.gateway()}, // $NON-NLS-1$ new Object[] {"IPAddress", networkSettings.ipAddress()}, // $NON-NLS-1$ new Object[] {"IPPrefixLen", networkSettings.ipPrefixLen()}, // $NON-NLS-1$ new Object[] {"PortMapping", networkSettings.portMapping()}, // $NON-NLS-1$ new Object[] {"Ports", LabelUtils.reduce(networkSettings.ports())}, // $NON-NLS-1$ }; } else if (propertyValue instanceof List<?>) { @SuppressWarnings("unchecked") final List<Object> propertyValues = (List<Object>) propertyValue; final Object[] result = new Object[propertyValues.size()]; for (int i = 0; i < propertyValues.size(); i++) { result[i] = new Object[] {"", LabelUtils.toString(propertyValues.get(i))}; // $NON-NLS-1$ } return result; } else if (propertyValue instanceof Map<?, ?>) { final Map<?, ?> propertyValues = (Map<?, ?>) propertyValue; final Object[] result = new Object[propertyValues.size()]; int i = 0; for (Entry<?, ?> entry : propertyValues.entrySet()) { result[i] = new Object[] {entry.getKey(), entry.getValue()}; i++; } return result; } return EMPTY; }